管理員講述將WebKit項目遷移至GitHub平台上的種種益處
Jonathan Bedard 在周三的文章上寫道: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頁面以了解詳情。