WebKit 登陆 GitHub!

6 月 23 日,WebKit 项目冻结了其 Subversion 树,并将源代码的管理和交互方式迁移到 GitHub 上的 git

WebKit project GitHub page

为什么选择 git

git 的分布式特性使得多个开发者甚至多个组织能够轻松地在单个项目上协作。git 的本地变更记录使得在分支之间移动提交或回滚变更变得简单快捷。git 的作者和提交者模型很好地展现了像 WebKit 这样的大型软件项目编写和管理代码的复杂方式。git 的本地提交消息记录,以及 git log 限制提交历史到仓库特定部分的能力,意味着大型项目不再需要将过时的 ChangeLog 文件与每次提交一起检入。

除了 git 的优势之外,它在软件工程中的普遍性意味着 WebKit 项目的大多数新贡献者已经发现他们更喜欢从 WebKit 项目的 git-svn 镜像进行工作,因此将我们的项目完全迁移到 git 与现有工具和工作流程很好地契合。这也意味着 WebKit 团队将有更多与 git 集成良好的工具和服务选择。

为什么选择 GitHub?

WebKit 项目欢迎来自世界各地开发者的贡献和反馈。GitHub 拥有庞大的开发者社区,尤其是 Web 开发者,WebKit 项目与他们紧密合作,以改进将这些开发者的创作带给全球用户的引擎。我们还发现 GitHub 的 API 允许我们在现有基础设施上进行相对较小的修改,就能构建高级的提交前和提交后自动化,并提供了一个现代化且安全的平台来审查新的代码变更并提供反馈。

维护次序

git 的一个缺点是 git 哈希值并非自然有序。WebKit 团队发现,能够轻松地推断仓库中提交的顺序对于我们的零容忍性能回归政策至关重要。我们决定在需要二分查找的工作流程中使用我们称之为“提交标识符”的东西。

main 分支上,提交标识符是一个提交所拥有的祖先数量。在从 main 分支分出的分支上,提交标识符是 main 上的祖先数量与该分支上的祖先数量结合。在 main 分支上,可以使用 git rev-list --count <ref> 计算提交标识符;在分支上,可以使用 git rev-list --count main..<ref> 计算。

WebKit 团队开发了一些简单的工具来处理提交标识符,其中最值得注意的是 Tools/Scripts/git-webkit(它提供与标识符兼容的 git 命令)和 commits.webkit.org(一个用于在不同提交表示形式之间进行转换的简单 Web 服务)。我们所有的提交都通过一个 commits.webkit.org 链接将其提交标识符嵌入到提交消息中。我们已在 GitHub wiki 上的 源代码控制 页面中详细阐述了提交标识符的工作原理。

欢迎您的贡献!

我们始终欢迎新的贡献者加入项目。立即从 GitHub 克隆 WebKit 开始吧!请查阅我们的“入门”文档,了解如何构建、测试和为项目贡献改进。WebKit 团队也在 Slack 的 #WebKit 频道提供支持,我们随时乐意帮助大家通过 webkit-dev 邮件列表参与项目。