1. 技術(shù)內(nèi)幕
- Subversion
- 集中式版本控制的典型代表。CVS 的最佳替代者,是開源軟件安裝量最大的版本控制系統(tǒng)。是開源軟件自身生存和繼續(xù)發(fā)展的基礎(chǔ)軟件。
- Bazaar
- 與 Ubuntu 一起成長(zhǎng)的分布式版本控制系統(tǒng)。實(shí)現(xiàn)賣主分支另外的方法,下一代個(gè)人版本控制系統(tǒng)。
- SVK
- 用SVK這一在 SVN 上實(shí)現(xiàn)的分布式管理系統(tǒng),曾經(jīng)作為 Subversion 分布部署的最佳選擇,今天已經(jīng)顯得過時(shí)了。我們有更好的跨地域版本控制的方案。
- Eclipse + Subclipse
- 在最流行的集成開發(fā)工具上使用最流行的版本控制工具。
- TortoiseSVN
- 命令行
- 解除 Windows 程序員對(duì)命令行的恐懼。
2. 分布式還是集中式版本控制
分布式版本控制系統(tǒng)已成爆發(fā)之勢(shì),越來越多的開源軟件使用諸如 GNU arch, Bazaar, Mercurial, Git, SVK等分布式版本控制系統(tǒng)。 這一方面是開源軟件開發(fā)的本質(zhì)(全部源碼公開,跨地域的開發(fā)團(tuán)隊(duì))決定的,另一方面是管理角度(服務(wù)器擴(kuò)展性,基于信任鏈的代碼提交)。
我們認(rèn)為了解分布式版本控制系統(tǒng),對(duì)于程序員是必要的,因?yàn)?
- 從開源社區(qū)汲取營(yíng)養(yǎng)的需要;
- 對(duì)第三方只讀源碼庫(kù)維護(hù)的需要;
- 下一代個(gè)人版本控制工具;
我們認(rèn)為“集中式”版本控制系統(tǒng),仍然是商業(yè)企業(yè)軟件開發(fā)中的首選,因?yàn)槭瞧髽I(yè)對(duì)授權(quán)和集中管理的需要。 即使有跨地域開發(fā)的需要,我們也可以通過鏡像、代理等方式實(shí)現(xiàn) Subversion 的高效運(yùn)行。
比較項(xiàng)目
|
分布式(bzr)
|
集中式(svn)
|
性能
|
服務(wù)器擴(kuò)展能力
|
★★★
|
★
|
網(wǎng)絡(luò)帶寬占用
|
☆
|
☆☆☆
|
本地保存的完整版本歷史
|
★★★
|
-
|
安全
|
歷史版本的安全驗(yàn)證
|
★★★
|
-
|
數(shù)據(jù)安全(BCP)
|
★★★
|
★
|
分支操作
|
代碼合并(merge)能力
|
★★★
|
★★
|
分支管理
|
★★★
|
★★★
|
分支建立速度
|
★
|
★★★
|
用戶界面
|
使用平臺(tái)廣泛性
|
★★★
|
★★★
|
命令行可用性
|
★★★
|
★★★
|
Windows圖形界面
|
★
|
★★★
|
權(quán)限管理
|
統(tǒng)一的用戶帳號(hào)
|
-
|
★★★
|
針對(duì)目錄的 Checkout
|
-
|
★★★
|
目錄授權(quán)
|
-
|
★★★
|
分支授權(quán)
|
★
|
★★★
|
其他
|
遠(yuǎn)程版本庫(kù)復(fù)制
|
★★★
|
★★★
|
離線提交
|
★★★
|
-
|
3. SVN 和 CVS 的對(duì)照
我們選擇 Subversion(SVN) 作為企業(yè)版本控制工具的首選,而不是 CVS。不是因?yàn)槲覀兪褂?Subversion 時(shí)間更久,也不是因?yàn)槲覀儗?duì) Subversion 更有感情。恰恰相反,CVS 很早就已經(jīng)滲透到我們的血液中。關(guān)于 CVS 可以參考我們這個(gè)文檔: 《CVS 版本控制》。
多年的使用 CVS 的開發(fā)經(jīng)驗(yàn),我們深感 CVS 在使用和管理上的不足。下面是 SVN 和 CVS 的對(duì)照。
比較項(xiàng)目
|
CVS
|
SVN
|
權(quán)限控制
|
是否依賴系統(tǒng)帳號(hào)
|
依賴
|
不依賴
|
可否對(duì)分支授權(quán)
|
否
|
是
|
是否支持LDAP認(rèn)證
|
否
|
是
|
圖形化帳號(hào)管理
|
否
|
是(集中管理平臺(tái))
|
用戶可否獲取忘記口令,修改口令
|
否
|
是(集中管理平臺(tái))
|
目錄,文件名變更
|
否
|
是
|
分支管理
|
創(chuàng)建分支時(shí)間
|
耗時(shí)*
|
快
|
分支可見、查詢
|
難
|
易
|
二進(jìn)制文件
|
二進(jìn)制優(yōu)化
|
否
|
是
|
二進(jìn)制文件標(biāo)識(shí)
|
手工
|
自動(dòng)
|
二進(jìn)制文件(圖形文件)被破壞
|
易破壞
|
不易破壞
|
事物處理
|
量子提交
|
否
|
是
|
修改提交說明
|
單個(gè)文件
|
是
|
換行符
|
可否指定換行符類型
|
否
|
是
|
檢查換行符設(shè)定,避免跨平臺(tái)開發(fā)帶來的混亂
|
否
|
是
|
功能擴(kuò)展
|
CVSROOT
|
hooks 腳本
|
網(wǎng)絡(luò)帶寬
|
網(wǎng)絡(luò)帶寬占用
|
高
|
低
|
脫機(jī)命令
|
否
|
部分
|
4. SVN 和 商業(yè)版本控制系統(tǒng)的對(duì)照
那么商業(yè)的版本控制工具如何呢?我們要大聲告訴你,不要!不要把您的核心資產(chǎn)——“代碼”讓他人綁架!
比較項(xiàng)目
|
某商業(yè)軟件
|
SVN
|
服務(wù)器端存儲(chǔ)
|
是否依賴數(shù)據(jù)庫(kù)(額外的管理負(fù)擔(dān))
|
依賴
|
不依賴
|
數(shù)據(jù)存儲(chǔ)格式是否開放
|
否
|
是
|
是否可以將版本庫(kù)導(dǎo)出?以便重建、導(dǎo)入其他項(xiàng)目、分發(fā)給第三方或者配置管理軟件切換。
|
否
|
是
|
是否可以對(duì)服務(wù)器端存儲(chǔ)進(jìn)行整理
|
否
|
是
|
是否可以徹底刪除配置項(xiàng)
|
否
|
是*
|
可否通過插件進(jìn)行功能擴(kuò)展?
|
否
|
是
|
命令行
|
命令行功能是否完備?以便實(shí)現(xiàn)工作自動(dòng)化
|
否
|
是
|
是否可以集成到自動(dòng)編譯(nightly build)系統(tǒng)?
|
否
|
是
|
文件狀態(tài)保持
|
客戶端本地是否有配置文件以保持狀態(tài)?
|
否
|
是
|
是否依靠服務(wù)器端進(jìn)行狀態(tài)保持?
|
是
|
否
|
客戶端是否可以脫機(jī)運(yùn)行?
|
否
|
是
|
工具整合
|
是否可以和資源管理器整合?
|
否
|
是
|
是否有 Eclipse 插件?
|
否
|
是
|
成本
|
軟件本身成本
|
高
|
低
|
培訓(xùn)成本
|
高
|
低
|
5. 群英匯:功能擴(kuò)展
-
與“開源速遞·集中管理”平臺(tái)整合;
- Hooks 插件擴(kuò)展;
- 改進(jìn)的二進(jìn)制文件和文件換行符屬性沖突檢查;
- Subversion 管理員命令行;
- 其他 bugfix ...
6. 為什么選擇群英匯
7. 相關(guān)文檔
posted on 2008-05-29 11:27
???MengChuChen 閱讀(511)
評(píng)論(0) 編輯 收藏 所屬分類:
VSS