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