2011-01-12 103 views
2

我們有一個最多5人在一個項目上工作的小型編程商店。我完全理解爲什麼DVCS更適合開源項目和大型公司,但對於「您可以在飛機上工作」以外的小型公司有什麼優勢。這將需要額外的SA工作來確保DEV盒上的存儲庫每晚都得到適當的備份。小商店,爲什麼DVCS?

我們也有幾個非技術人員(藝術家,翻譯)誰可以(有點)處理SVN,在人們的經驗需要多少培訓才能讓他們轉移到DVCS?

+1

DVCS技術上支持「分佈式」工作流程系統,但這並不意味着您必須採用一個,而您幾乎肯定不會。汞和git支持中央同步系統,恕我直言,在某些方面比一些集中式工具集更好(例如,請參閱我對apollodude217的回答的評論) – araqnid 2011-01-27 12:41:51

回答

4

我想說說我的經驗,主要是SVN和Hg,經常與不熟悉版本控制的設計師和程序員合作。

我用過的SVN和其他CVCS的大牛肉是他們阻止你提交,不僅在網絡關閉的時候,而且在發生衝突的情況下(或者更糟糕的是,有人鎖定文件,其他人可以對其進行更改!)。你當然可以委託一個分支機構,但是在切換分支機構所需的網絡帶寬和融合涉及的痛苦之間,你仍然有問題。

當然,SVN會阻止您提交衝突的文件,以免意外覆蓋其他人的工作; SVN要求您至少承認您知道一個版本或另一個版本(或兩者的自定義組合)是正確的。然而,Mercurial有更好的解決方案(實際上是2): 1.您現在可以立即提交到本地存儲庫並稍後進行合併。 (所有的DVCS都有這個功能。) 2.即使你拉或推衝突的變化,而不是被阻止提交,你有多個頭通過匿名分支。 (對不起,我不能在這裏詳細解釋這一點,但你可以谷歌它。)

所以你的工作流程從: 1.獲取最新的,進行更改,測試它們。 2.獲取最新的,解決衝突,測試結果。 3.提交。

併成爲: 1.獲取最新信息,進行更改,測試它們。 2.提交(讓你有一個地方可以回退)。 3.獲取最新的,解決衝突,測試結果。 4.提交併推送。

額外的提交意味着您每次提交的工作量減少,因此您有更多檢查點可以重新使用。還有其他一些方法可以讓你不用別人的方式進行更多的提交。

SVN只是慢了足以打破我的注意力,並誘使我去facebook; mercurial速度快,git速度更快。查看日誌或更改工作副本時,速度問題變得非常重要。使用TortoiseHg,我可以點擊一個文件列表,然後立即查看對該文件的更改;使用TortoiseSVN + WinMerge每個文件大約需要幾秒鐘(不知道這是由DVCS引起的)。我使用這些工具的次數越多,越覺得VCS需要快速,就像文本編輯器或鼠標光標一樣 - 速度足夠快,以至於您不需要網絡來完成這項工作。主觀上,我發現TortoiseHg比TortoiseSVN(或其他使用過的烏龜)更容易使用。 TortoiseHg也是多平臺的。 :)

還有一件事:據我所知,SVN的工作副本遞歸定義:每個文件夾是一個工作副本。這可以讓你做一些花哨的東西(例如,有一個包含來自存儲庫中不同位置的文件夾的工作副本)。我不知道Hg是否具有類似的功能,但根據我的經驗,SVN實現此功能只會導致我工作的問題,特別是對於那些不太滿意SVN的用戶。當他們通過操作系統shell而不是通過svn copy複製和粘貼他們計算機上的WC文件夾時,它會打開自己的WC。我也以這種方式搞笑了我的WC。這對Hg來說不是什麼問題 - 無論是克隆,更新還是提交,您都一次可以使用整個回購協議。

+0

+1:imho「svn update」/「p4 sync」的傾向「/無論如何讓你處於你*有*現在處理合並的狀態,以便能夠做任何事情*是一個殺手。能夠將局部變化轉移到分支上,或者簡單地放棄安全拉動的行爲,這一切都是非常重要的。 – araqnid 2011-01-27 12:39:15

2

SVN自發布以來在合併方面進行了很多改進。但它仍然缺少文件重命名跟蹤,往往導致樹衝突Renaming is the killer app of distributed version control解決了這個問題,在評論部分添加了一些有趣的鏈接。

DVCS讓您推送到中央存儲庫,代價是與Subversion相比有一個額外的命令。偶爾的用戶應該能夠適應工作流程中的這種微小變化。但給予「本地」的自由,承擔和分支給權力用戶而不會混淆中央存儲庫。

關於工具,這對用戶的接受可能很重要,Mercurial和Subversion一樣。