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