开源网页浏览器引擎WebKit项目在6月的时候,冻结了版本控制系统Subversion树,并将管理和源码转移到了GitHub上,采用Git来进行项目开发协作。官方提到,搬迁的原因除了Git本身的多项优点之外,软件开发者普遍更喜欢Git。
Git分布式的特性使多个开发人员,甚至是多个组织可以在单一项目上协作,Git的本地更改记录,使分支之间的移动提交或是回退变更更为简单快速。
Apple WebKit团队的软件工程师Jonathan Bedard认为,Git的作者和提交者模型,能够良好地应用在像是WebKit这种大型软件项目编写和管理程序代码的复杂方法,Git本地提交消息记录和Git Log,限制提交历史记录在存储库的特定位置,这代表着大型项目不用在每次提交时,都要签入(Check in)过时的ChangeLog文件。
WebKit项目原本就已经在使用Git,许多开发人员也早已经习惯在git-svn镜像备份工作,Jonathan Bedard提到,由于Git在软件工程中普遍受到欢迎,也就代表WebKit项目大部分新的贡献者会倾向使用Git。将WebKit搬迁到专门的Git,不仅能够与现有工具和流程相配合,WebKit团队也会有更多与Git良好集成的工具和服务可以选择。
不过采用Git也有需要克服的挑战,WebKit的缺点之一是Git散列并非自然排序,但WebKit团队认为可以简单推断存储库中提交顺序的能力,是WebKit零容忍性能回归政策的重要关键。
因此WebKit在工作流程中导入提交识别码(Commit Identifier)的机制,在主分支上,提交识别码是提交所拥有的祖先数量计数,而主分支上其他分支的提交识别码,则是主分支祖先的数量加上该分支的祖先数量,如此便能计算出每个提交的顺序。
虽然处理排序需要额外的工作,但是采用Git仍然利大于弊,因为WebKit项目的贡献和反馈来自全世界的开发者,Jonathan Bedard表示,GitHub拥有庞大的开发人员社群,特别是网页开发者,有利于WebKit项目与他们密切合作改进引擎。
而且因为GitHub方便的API,使得WebKit项目人员只要些微修改现有基础设施,就能够构建高端的提交自动化机制,并提供一个更先进且安全的平台,来审查和反馈新的程序代码变更。