開源網頁瀏覽器引擎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專案人員只要些微修改現有基礎設施,就能夠建構進階的提交自動化機制,並提供一個更先進且安全的平臺,來審查和回饋新的程式碼變更。

熱門新聞

Advertisement