作者 | 羅燕珊
控制系統 (VCS),又叫修訂控制或源控制系統,是一種軟件實用程序,用于跟蹤和管理對文件系統的更改。幾乎所有軟件的代碼的備份、歷史追蹤、協同編輯等任務都需要版本控制系統完成。
從最早本地 VCS 系統 RCS、1990 年 CVS、2000 年 SVN(Subversion),到如今開源世界風頭正健的 Git,同語言編輯工具一樣,SVN、Git 都是程序員的必備利器。近些年,隨著 GitHub 的流行,很多軟件紛紛轉向 Git。
8 月 31 日,蘋果 WebKit 項目運營工程師 Jonathan Bedard 發布博文稱,在今年 6 月 23 日,WebKit 項目凍結了 Subversion 樹,遷移到托管在 GitHub 的 Git 源代碼管理系統。
為什么選擇 Git?
WebKit 原先使用 Apache 的源代碼管理系統 SVN,這次之所以遷移,是因為 WebKit 社區意識到了 Git 分布式特性的重要性和其龐大的社區。
SVN 是集中式的系統,而 Git 的分布式特性使開發人員在項目協作方式方面更加靈活,允許多個組織協作。
“Git 的本地提交消息記錄,以及 Git 日志將提交歷史限制在存儲庫的某些部分的能力,意味著大型項目不再需要在每次提交時檢查過時的 ChangeLog 文件,” Bedard 說。
而且,WebKit 項目的許多新貢獻者更傾向于在 git-svn 鏡像上工作,當涉及到現有的工具和工作流程時,這樣的轉換也被視為理所當然的。
Bedard 進一步表示,“選擇托管在 GitHub 是因為它有龐大的 Web 開發者社區,WebKit 項目能與他們密切合作以改進引擎。我們還發現,GitHub 的 API 讓我們只需對現有的基礎設施進行相對較小的修改,就能建立起先進的預提交和后提交自動化,并提供一個現代且安全的平臺來審查和提供有關新代碼更改的反饋。”
遷移是好事嗎
用戶可能會發現蘋果此舉令人沮喪的是,Git 哈希值并不是自然排序的,所以 WebKit 團隊決定在需要分叉的工作流程中使用他們所謂的“提交標識符(commit identifiers)”。WebKit 有一個“零容忍性能退步”政策,這意味著,能夠輕松推理出存儲庫中的提交順序是至關重要的。
許多開發者都在問為什么這樣的遷移需要這么長時間,并不是所有的人都認為這是一個好主意。
“僅在今年,GitHub 就發生了 50 多次故障,而且在追索方面也有糟糕的歷史,限制受美國貿易制裁國家的開發者。如果‘WebKit 項目對世界各地的開發者的貢獻和反饋感興趣’,那么切換到 GitHub 是沒有意義的。”一位用戶在 HackerNews 論壇上評論道。
還有人表示,即使最終項目發展會變成更順利,但過渡到 Git 的過程也是場噩夢。
但也正如一位用戶所說:“鑒于 GitHub 是一個被普遍理解的主機,而且它有人們喜歡的所有 UI/ 開發集成,所以使用它是有意義的。另外,擁有 GitHub 賬戶的人似乎越來越多,因此貢獻者不必再創建另一個帳戶來提供其他服務。”
Git 由 Linus 在 2005 年開發而來,演化至今已經成為了最流行和最先進的開源版本控制工具,不過仍然有很多的公司和團隊還在使用 SVN 或者 CVS 對項目進行版本控制,部分公司確實有一些可能合理的原因來維持現狀,但是使用 Git 在絕大多數的場景下確實能讓我們的開發和合作變得更加高效。
參考鏈接:
https://webkit.org/blog/13140/webkit-on-github/
https://www.theregister.com/2022/09/01/webkit_migrates/
https://www.infoq.cn/article/ahoxlss6g153hod0y5iz