PHP內部投票:多數人支持遷移到 Git
來自 PHP 內部消息:
PHP 內部在進行去集中化的版本控制系統討論,經過兩周的內部投票和討論,現結果已出來:
52 票選擇 Git
15 票選擇 Mercurial
1 票選擇 bazaar
13 票繼續使用 SVN
這個投票結果顯示選擇 Git 是壓倒性的。而具體的遷移工作估計要到今年12月才開始。
Git是一個開源的分布式版本控制系統,用以有效、高速的處理從很小到非常大的項目版本管理。
Git 是 Linux Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
Torvalds 開始著手開發 Git 是為了作為一種過渡方案來替代 BitKeeper,后者之前一直是 Linux 內核開發人員在全球使用的主要源代碼工具。開放源碼社區中的有些人覺得 BitKeeper 的許可證并不適合開放源碼社區的工作,因此 Torvalds 決定著手研究許可證更為靈活的版本控制系統。盡管最初 Git 的開發是為了輔助 Linux 內核開發的過程,但是我們已經發現在很多其他自由軟件項目中也使用了 Git。例如,X.org 最近就遷移到 Git 上來了,很多 Freedesktop.org 的項目也遷移到了 Git 上。
Git與CVS的區別
- 分支更快、更容易。
- 支持離線工作;本地提交可以稍后提交到服務器上。
- Git 提交都是原子的,且是整個項目范圍的,而不像 CVS 中一樣是對每個文件的。
- Git 中的每個工作樹都包含一個具有完整項目歷史的倉庫。
- 沒有哪一個 Git 倉庫會天生比其他倉庫更重要。
Mercurial 是一種輕量級分布式版本控制系統,采用 Python 語言實現,易于學習和使用,擴展性強。相對于傳統的版本控制,具有如下優點:
- 更輕松的管理。
傳統的版本控制系統使用集中式的 repository,一些和 repository相關的管理就只能由管理員一個人進行。由于采用了分布式的模型,Mercurial 中就沒有這樣的困擾,每個用戶管理自己的 repository,管理員只需協調同步這些repository。 - 更健壯的系統。
分布式系統比集中式的單服務器系統更健壯,單服務器系統一旦服務器出現問題整個系統就不能運行了,分布式系統通常不會因為一兩個節點而受到影響。 - 對網絡的依賴性更低。
由于同步可以放在任意時刻進行,Mercurial 甚至可以離線進行管理,只需在有網絡連接時同步。
Bazaar 是一個分布式的版本控制系統,它發布在 GPL 許可協議之下,并可用于 Windows、GNU/Linux、UNIX 以及 Mac OS 系統。Bazaar 由 Canonical 公司贊助,目前已服務于 Samba、Drupal 等知名的開源項目。
Bazaar 當前已經包含許多有用的功能,這些功能使之具有如下鮮明的特點:
- 容易使用
- 穩定可靠
- 使用靈活
Subversion是一個版本控制系統,相對于的RCS、CVS,采用了分支管理系統,它的設計目標就是取代CVS。互聯網上免費的版本控制服務多基于Subversion。
優于CVS之處
- 原子提交。一次提交不管是單個還是多個文件,都是作為一個整體提交的。在這當中發生的意外例如傳輸中斷,不會引起數據庫的不完整和數據損壞。
- 重命名、復制、刪除文件等動作都保存在版本歷史記錄當中。
- 對于二進制文件,使用了節省空間的保存方法。(簡單的理解,就是只保存和上一版本不同之處)
- 目錄也有版本歷史。整個目錄樹可以被移動或者復制,操作很簡單,而且能夠保留全部版本記錄。
- 分支的開銷非常小。
- 優化過的數據庫訪問,使得一些操作不必訪問數據庫就可以做到。這樣減少了很多不必要的和數據庫主機之間的網絡流量。
使用情況
雖然在 2006年 時 Subversion 的使用族群仍然遠少于傳統的 CVS,但已經有許多開放原碼團體決定將 CVS 轉換為 Subversion。已經轉換使用 Subversion 的包括了 FreeBSD、Apache Software Foundation、KDE、GNOME、GCC、Python、Samba、Mono 以及許多團體。有許多的團隊換用 Subversion 是因為 Trac 所提供的專案管理環境。除此之外,一些自由軟件開發的協作網如SourceForge除了提供 CVS 外,現在也提供專案開發者使用 Subversion 作為原碼管理系統, JavaForge、Google Code以及 BountySource 則以 Subversion 作為官方的原碼管理系統。