下面是版本管理器的進化圖,這張圖上分成了四個時期:
史前時期:1982年的RCS?,F(xiàn)在你可能還能在Unix的發(fā)布包中找到它。
古典時期:1990年的CVS(經典的SCM管理器,可惜不能track目錄和文件名的改變,今天這個東西已經過時了),1985年的PVCS,1992年的clearcase(價格貴,功能復雜,當然,今天也有很多公司在用),微軟的VSS(Welcome to Hell),90年代中期的Perforce(P4,這個工具今天都還在被廣泛地使用,尤其是那些中等大小卻有著大量開發(fā)團隊的公司,現(xiàn)在是Google 內部最大的代碼管理器)。
中世紀時期:SVN(Linus很不喜歡SVN,2006年引入了Git),AccuRev(強力支持branch和merge,其扮演了一個很重要角色幫助社區(qū)脫離clearcase和CVS),
文藝復興時期:BitKeeper——Sun的內部管理工具,Linux的內核代碼2002年也用這個工具,其實,很多開源工程都在用這個工具,2005年這個工具的東家BitMover對大家對BitKeeper逆向工程很不滿,于是停止支持開源,于是出現(xiàn)了Git。
Git的第一個版本是Linux之父Linus Torvalds親手操刀設計和實現(xiàn)的(據(jù)說只用了一個周末),Linus不僅僅給出一個原始設計(簡單的、干凈的、天才的),同時,他也用自己那獨一無二的風格催生了這個項目(請參看: http://codicesoftware.blogspot.com/2007/05/linus-torvalds-on-git-and-scm.html 還是被墻)。
在Linus介紹Git的著名的演講中,他強烈地批評(好吧,應該算是侮辱)了CVS,SVN,和Perforce:“Subversion是史上 最毫無意義的項目,從項目開始就是這樣了”,“如果你喜歡CVS,那么你現(xiàn)在應該在某個精神病研究中心或是別的地方”,“別在用Preforce了,它是 十分糟糕和可悲的,這絕對絕對是真的”。無論是反對還是喜歡,Linus的確是改變了歷史——中世紀已經過去了,現(xiàn)在的世界由分布式系統(tǒng)主宰,以及消除 branch和merge的恐懼。
Git 基于 DAG 結構 (Directed Acyclic Graph),其運行起來相當?shù)目?。在Git發(fā)布后的來年,世界上所有的大型的開源項目全部從Subversion遷移到了Git上,www.github.com真是很大,這可能是這具星球上最強大最牛最酷的SCM系統(tǒng)了。Git可能并不是最簡單的,但它一定會是未來十年的主流。(有空讀讀這本書——Git Internals)
Mercurial (Hg) 第一次出現(xiàn)在2005年4月,也是因為BitKeeper不免費了。Hg可以和Git在一起使用,見:http://mercurial.selenic.com/wiki/HgGit。但是Hg和Git在設計上不一樣,他們對提交/變更的概念是一樣的,只不過Git用tree來實現(xiàn),而Hg則是用扁平的文件和目錄來實現(xiàn)(revlog),設計細節(jié)可參看:http://mercurial.selenic.com/wiki/Design和 http://mercurial.selenic.com/wiki/DeveloperInfo。
Darcs (Darcs Advanced Revision Control System)是另一個讓你擺脫Subversion和CVS的工具,2002年開始,今年是2.5版。它的優(yōu)勢是性能,以及他與眾不同的歷史版本管理 ——管理patches而不是snapshot(提交/修改),當然,這樣一來,歷史改變看上去很不好懂。
Bazaar (bzr) 是另一個開源的 DVCS,它試圖給SCM的世界里帶來一些新的東西。其由Canonical開發(fā)(Ubuntu的那個公司),在2008年成為GNU。
Plastic在2006年出現(xiàn),強力地支持branch和merge,其還提供了強大的圖示,包括3D的版本樹,Plastic主要是為了讓中等開發(fā)團隊使用,介于大型的團隊(ClearCase)和小型的團隊(Subversion)之間。
Team Foundation Server (TFS),微軟的新一代SCM工具,主要是為了VSS的失敗負責,但是他還不是版本管理上還是很強,只不過,他集成了一大堆各種各樣的工具,比如:issue tracking,test management等。
原文鏈接:http://codicesoftware.blogspot.com/2010/11/version-control-timeline.html (墻)
譯文鏈接:http://coolshell.cn/articles/3288.html