小商店,为何选择DVCS?

时间:2011-01-12 16:27:00

标签: version-control dvcs

我们有一个小型的编程工作室,最多有5个人在一个项目上工作。我完全理解为什么DVCS更适合开源项目和大型公司,但除了“你可以在飞机上工作”之外,它对小公司有什么优势。这将需要额外的SA工作,以确保我们的DEV盒上的存储库每晚都得到适当的备份。

我们还有一些非技术人员(艺术家,翻译)可以(有点)处理SVN,在人们的经验中需要多少培训才能让他们转移到DVCS?

2 个答案:

答案 0 :(得分: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不太舒服的人。当他们通过OS shell而不是通过svn copy将WC文件夹复制并粘贴到他们的机器上时,它会搞砸他们的WC。我也用这种方式搞砸了我的WC。这不是Hg的问题 - 无论是克隆,更新还是提交,您通常都会立即使用整个仓库。

答案 1 :(得分:2)

自发布以来,SVN在合并方面取得了很大进展。但它仍然缺少文件重命名跟踪,经常导致树冲突Renaming is the killer app of distributed version control解决了这个问题,在评论部分添加了一些有趣的链接。

与Subversion相比,DVCS允许您推送到中央存储库,代价是一个额外的命令。偶尔用户应该能够适应工作流程中的这种微小变化。但是给予权力用户“本地”提交和分支的自由,而不会使中央存储库混乱。

关于可能对用户接受度很重要的工具,Mercurial与Subversion不相上下。