JonathanBedard在周三的文章上寫道:6月23日,WebKit項目凍結Subversion樹,並將源碼的管理與交互遷移到GitHub上。之所以這麼做,是因為WebKit社區意識到git分佈式特性的重要性——不僅僅涉及多個開發人員、而是能夠讓多個組織在單個項目上輕松展開協作。
(來自:WebKit.org)
git 作者與提交者模型,很好地呈現像 WebKit 這樣的大型軟件項目,其在代碼編寫和管理工作上到底有復雜。
得益於本地變更記錄,git 可讓項目在各分支之間的移動提交 / 撤銷都變得更加便捷。
同時 git log 將提交歷史限制到存儲庫某些部分的能力,意味著大型項目不再需要於每次提交時簽入過時的 ChangeLog 文件。
另外它在軟件工程中的普遍性,意味著 WebKit 項目的大多數新貢獻者,都會發現自己的 git-svn、更傾向於從 WebKit 項目的鏡像中著手。
所以 WebKit 決定將項目轉變為純 git 模式,並且能夠很好地配合現有工具 / 工作流程。
至於 GitHub 為何如此受青睞,Jonathan Bedard 解釋稱:
首先,WebKit 項目組對來自世界各地的開發者的貢獻和反饋都深感興趣,而 GitHub 正好擁有一個非常龐大的開發者社區 —— 尤其是 Web 開發人員。
通過與他們密切合作,WebKit 引擎可以得到充分的改進,並將這些開發人員的創作傳遞到世界各地的用戶手中。
其次,我們發現 GitHub 的 API 讓我們可以通過對現有基礎架構施加較小的修改、來構建高級的提交前後的自動化體驗。
以及提供一個現代且安全的平臺,來審查並提供有關新代碼更改的反饋。
當然 git 也不是那樣完美無缺,比它的哈希不是自然排序的。
WebKit 團隊發現,輕松推斷存儲庫中提交順序的能力,對於我們的零容忍性能回歸策略至關重要。
於是我們在決定需要二分的工作流程中,使用所謂的‘提交標識符’方案。
在主分支上,commit identifiers 特指提交擁有的祖數量(ancestors)計數,而分支還得結合兩者。
至於確切的提交標識符,可分別通過 git rev-list --count <ref> 或 git rev-list --count main..<ref> 來計算。
為此,WebKit 團隊開發一些簡單的工具來處理 commit identifiers 。
值得一提的有 Tools/Scripts/git-webkit(提供 git 與標識符兼容的命令),
以及 commits.webkit.org(用於在不同提交表示之間進行轉換的簡單 Web 服務)。
此外所有提交提交都通過 commits.webkit.org 鏈接,將標識符嵌入到各自的提交消息中。
感興趣的朋友,可移步至 GitHub wiki / Source Control 頁面以解詳情。