歡迎您光臨本站 註冊首頁

ThoughtWorks開發人員最喜愛的版本控制系統

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  

Martin Fowler在ThoughtWorks的軟體開發郵件列表中做了一個調查,了解開發人員怎麼看待一些版本控制系統(VCS)。他據此對主要的版本控制系統寫了一篇評論文章,並對集中式和分散式系統進行了比較。

調查的結果如下:

 

工具

最佳

不錯

有問題

危險

無意見

有效回復

贊成比例 %

git

65

19

1

0

14

85

99%

Mercurial

33

27

2

0

36

62

97%

Subversion

20

72

6

1

0

99

93%

Bazaar

1

13

3

0

80

17

82%

Perforce

1

26

16

1

54

44

61%

CVS

0

14

59

11

15

84

17%

ClearCase

0

3

14

41

41

58

5%

VSS

1

1

11

64

22

77

3%

TFS

0

0

32

22

44

54

0%

參與者把9種版本控制系統進行分類:最佳、不錯、有問題、危險、無意見,最後一個是說他們根本沒有用過。“有效回復”是指去除“無意見”的所有其他回復,而“贊成比例%”是指(最佳+不錯)/ 有效回復的比例。

雖然調查的範圍有限,只表明了ThoughtWorks公司內部的主觀看法,但該結果或許也可以代表其他公司對版本控制系統的看法。

兩個開源分散式版本控制系統,git和Mercurial贊成比例最高,均超過了95%。開源集中式版本控制系統Subversion,贊同比例也很高,達到93%。而排名最低的是商業系統:IBM的ClearCase,微軟的VSS和TFS。

所有的99個回復者都用過Subversion,85個用過git,84個用過CVS,而使用過Bazaar的只有17個人。多達77個人使用過VSS,但是其贊成比例只有3%。

這些結果與老馬最初關於版本控制系統的評論不謀而合。通過與ThoughtWorks員工及合作者的討論,馬丁福勒總結說大家普遍接受的版本控制系統有3種,也是值得推薦的:Subversion、git和Mercurial。這意味著你需要在集中式和分散式VCS之間選擇。對老馬來說,分散式VCS的好處是“給工作帶來了許多靈活性,但如果使用不當,這些靈活性反而會比較危險”。Subversion的好處是:

鼓勵使用簡單的中央倉庫模型,不鼓勵大規模使用分支。如果你像我的許多朋友那樣,正在使用持續集成,這種模型相當好用。Subversion是個絕佳選擇。

雖然分散式VCS給了你很多靈活性,可以靈活管理工作流程,然而據我所知,多數人的工作模式仍然基於一個共享的主線倉庫,這也可以給持續集成使用。雖然現代的VCS都有強大的工具合併不同人的變化,但仍然只能是文本合併。持續集成仍然需要語義一致性。所以雖然團隊使用了分散式VCS,但仍然會有中央式主倉庫的想法。

老馬進而對分散式VCS和集中式VCS做了對比:

  • 速度 - 由於沒有本地倉庫拷貝,Subversion較慢,尤其是當伺服器遠在其他大洲時。
  • 連接 - 即使網路斷掉,分散式VCS也能夠使用。
  • 分支 - 分散式VCS鼓勵使用分支:

分散式VCS鼓勵為試驗快速創建分支。你也可以在Subversion中創建分支,但它們對所有人可見,妨礙了大家這麼做。與此類似,分散式VCS鼓勵在工作中設置檢查點:你可以向本地代碼庫簽入沒有完成的代碼,它們可能測試不過,甚至編譯不過。同樣,Subversion中你也可以在開發者分支中這樣做,但由於這些分支是共享的,大家都不願意這樣做。

老馬提到集中式VCS更擅長處理二進位文件:

特定情況下,即使整個團隊已經熟練使用分散式VCS,也最好選擇Subversion。這就是當使用二進位,VCS無法合併的時候-比如Word文檔或者幻燈片。此時需要使用悲觀鎖,只能有一個簽出是可寫的-這就需要一個集中式的系統。

老馬對ClearCase和TFS的評價很低:

有兩個VCS倍受批評:IBM的ClearCase和微軟的TFS。它們廣受批評的原因之一是客戶使用廣泛,通常是公司政策強制使用。

...我尊敬的一些開發人員曾頻繁使用這些產品,但是並不推薦使用。

VSS被認為是最差的選擇:

在結束不推薦的版本控制系統之前,我想說一下這個尤其糟糕的工具:Visual Source Safe,或者可以稱之為:Visual Source Shredder(譯註:shredder,粉碎機)。感謝上帝,它現在已經很少見了,但是如果你還在用它,我們強烈建議你換掉,就現在!它不但用起來非常痛苦,我還聽說過多次數據倉庫崩潰的故事,實在不能讓人信任。

老馬的看法比較主觀,並沒有比較它們的實際功能。文章Better SCM Initiative中對28種版本控制系統做了深度比較,但並沒有排名,而是提供一些關鍵功能指標,包括:原子提交、文件和目錄的移動或者重命名、移動或者重命名后的智能合併、文件和目錄拷貝、能夠只在一個目錄工作、跟蹤沒有提交的變化、文檔、部署的難易程度等等,這樣用戶可以自己決定哪個VCS最好。

Scott Chacon寫了個帖子為git辯護,解釋為什麼他認為git比Mercurial、Bazaar或者SVN更好:廉價的本地分支、一切都在本地、速度快、適用於任何工作流程,以及其他一些原因。

當然,每個開發人員或者團隊都有自己喜歡的CVS。您最喜歡的是什麼呢?您有沒有高興或者慘痛的經歷與大家分享?

參見英文原文:ThoughtWorks’ Developers Favor Distributed Version Control Systems



[火星人 ] ThoughtWorks開發人員最喜愛的版本控制系統已經有370次圍觀

http://coctec.com/docs/program/show-post-71585.html