1. 程式人生 > >程式碼版本管理系統歷史

程式碼版本管理系統歷史

碼版本管理系統大致可以分為三個時代:

第一代:本地式

這代主要的特點提供原生代碼版本控制,比如SCCS(1972)、 PVCS(1985)等。

這代主要實現了基本的程式碼版本管理,但缺點是無法讓多人同時對一個版本庫進行修改。這個也和當時軟體規模不夠大有關,也沒有這樣的需求。

第二代:客戶端-伺服器式

這代主要的特點是提供集中式伺服器端程式碼版本控制,比如 CVS(1986), ClearCase(1992), Visual SourceSafe(1994), Perforce(1995), Subversion(2000) 等。

這代主要是實現了中心伺服器端的程式碼版本管理,特點是可以讓多人同時對一個程式碼版本庫進行同步和修改,但缺點也相當明顯:

  1. 在無法連線伺服器的情況下,無法檢視日誌以及提交和比較程式碼版本(慢速網路和遠端異地工作的程式設計師的痛),以及當服務或者網路出現問題的時候很多人員就會無法工作。
  2. 不支援local branch,導致branch建立管理複雜,並且一旦建立就很難修改(快速迭代開發中的程式設計師的痛)
  3. 由於只有一箇中心端伺服器,一旦發生災難性問題,那麼所有日誌都會丟失,所以需要經常做備份(備份需要不小的成本)
  4. 如果軟體程式碼量過於龐大,一般會出現速度緩慢的情況,因為每次的日誌查詢、不同版本之間的程式碼比較和程式碼提交等操作都需要和伺服器通訊,造成伺服器端的負載過大。
  5. 提交程式碼時無法先做Code Review 和CI Review。

第三代:分散式

這代主要的特點是提供分散式程式碼版本控制,比如Git(2005), Mercurial(2005)等。

這代結合了第一代和第二代的優點並實現了分散式的程式碼版本管理。

這代的優點:分散式管理,在沒有和伺服器有連線的情況下仍然可以檢視日誌,提交程式碼,建立分支;支援local branch,可以快速方便的實現各種分支管理;支援分散式,從而可以實現分塊管理,以及負載分流管理。

缺點是有一定的學習曲線,比如分佈方式下的程式碼同步,local branch的理解與運用,分散式程式碼管理的理解與運用等。

SVN到Git的遷移方案一般主要會使用兩種工具:

  1. 開源免費的git-svn;
  2. 商業收費的Subgit。

作者:ThoughtWorks中國
連結:https://www.zhihu.com/question/25491925/answer/175222330