版本管理器的學習總結
在軟件工程不斷髮展的過程中,各種各樣的軟件開發方法,技術和工具也在發展,其中當然也包括版本控制工具.下面就簡單探討一下版本控制工具的發展及各自的功能特點,希望對公司選擇版本控制工具的時候有參考價值.
版本控制工具的發展大概經歷了3代,從開始的使用鎖的第一代,到集中式的第二代,再到現在的分佈式的第三代.
第一代版本控制工具使用鎖的機制,一次只能一個人修改一個文件,並不支持並行開發.典型例子是RCS,SCCS.
第二代版本控制工具是集中式的,支持並行開發,一次可以修改很多文件,但是有一個很大的限制是必須在提交前合併,如果有衝突的話,典型例子是CVS, Subversion, SourceSafe.
第三代版本控制工具是分佈式的,它沒有集中式提交前合併的限制,主要在2000年以後隨着開源軟件的發展而發展起來,不斷在發展壯大,速度也快,典型例子是Bazaar, Git, Mercurial.
下面表格是3代版本控制工具的比較:
代 |
網絡 |
操作 |
並行性 |
模式 |
典型例子 |
1 |
無 |
一次一個文件 |
鎖 |
無 |
RCS, SCCS |
2 |
集中式 |
多個文件 |
提交前合併 |
直線式 |
CVS, SourceSafe, Subversion |
3 |
分佈式 |
變更集 |
先提交再合併 |
DAG |
Bazaar,Git,Mercurial |
另外簡單探討一下我熟悉的版本控制工具.
當然提起版本控制工具,就不能不談Clearcase,它提供了強大的版本控制,並行開發,多地同步,安全控制是靠操作系統的權限管理的,缺點就是公司需要根據自己的流程開發集成的腳本和觸發器等工具,而且各個公司的工具也不統一.UCM在Clearcase的基礎上,基於流的概念實現了統一,而且支持變更集的概念,大大提高了效率.最近IBM的Rational又針對這幾年分佈式版本控制工具的特點推出了RTC,目的是在集中式的存儲庫的方式下,體現出分佈式版本控制工具的大部分優點,如支持個人工作環境,通過鎖定的方式支持希不希望並行修改,支持分佈式工作流.當然IBM的這套工具雖然功能強大,但是價格不菲,而且需要服務器的安裝相當複雜,一般都是傳統大公司在使用Clearcase或者UCM,而新公司選擇RTC的比較多.
Subversion是集中式的版本控制工具,並且是開源的,適合中小型的公司,而且也比較簡單,當然功能有限,安全性也差.
Perforce是另一個在很多公司使用的集中式的版本控制工具,支持變更集的概念,有安全控制,性能也很好,但是不開源,當然比Clearcase便宜很多,架構也比Clearcase簡單.值得一試.
Git 基於 DAG 結構 (Directed Acyclic Graph),其運行起來相當的快。在Git發佈後的來年,世界上所有的大型的開源項目全部從Subversion遷移到了Git上,http://www.github.com/真是很大,這可能是這具星球上最強大最牛最酷的SCM系統了。Git可能並不是最簡單的,但它一定會是未來十年的主流。
注:以上內容主要來自文章<Version Control by Example>,讀者可以用下面的連接詳細學習.
http://www.ericsink.com/vcbe