我们有一个小的编程车间,最多5个人在一个单一的项目工作。我完全理解为什么DVCS更适合开源项目和大公司,但是除了“您可以在飞机上工作”之外,它对小公司还有什么优势呢?这将需要额外的SA工作,以确保我们的DEV盒上的存储库每晚都进行了正确的备份。
我们也有几个非技术人员(艺术家,翻译),他们可以(某种程度上)处理SVN,在人们经历了多少培训才能让他们转到DVCS?
发布于 2011-01-27 20:35:12
我将根据我的经验发言,主要是使用SVN和Hg,经常与不习惯版本控制的设计师和程序员一起工作。
我对SVN和我使用过的其他CVCS的最大不满是,它们阻止您进行提交,不仅在网络中断时,而且在发生冲突的情况下也是如此(或者更糟糕的是,有人锁定了文件,因此其他人无法对其进行更改!)。您当然可以提交到一个分支,但是在切换分支所需的网络带宽和合并所涉及的痛苦之间,您仍然有一个问题。
当然,SVN阻止您提交冲突的文件,这样您就不会意外地覆盖其他人的工作;SVN要求您至少确认您知道其中一个版本(或两个版本的自定义组合)是正确的。然而,Mercurial有一个更好的解决方案(实际上是2):1.你可以现在提交到本地存储库,然后再合并。(所有DVCS都有此功能。) 2.即使您拉入或推送冲突的更改,也不会被阻止提交,而是通过匿名分支获得多个头。(抱歉,我不能在这里详细解释这一点,但您可以在google上搜索它。)
因此,您的工作流程是: 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来说问题不大--您通常一次处理整个代码库,无论是克隆、更新还是提交。
发布于 2011-01-13 01:34:22
自从发布以来,SVN在合并方面有了很大的改进。但它仍然缺乏文件重命名跟踪,经常导致树冲突。Renaming is the killer app of distributed version control解决了这个问题,在评论部分添加了一些有趣的链接。
DVCS允许您推送到中央存储库,与Subversion相比,只需执行一个额外的命令。偶尔使用的用户应该能够适应工作流程中的这一微小变化。但是给超级用户提供“本地”提交和分支的自由,而不会使中央存储库变得混乱。
关于工具,这可能对用户的接受度很重要,Mercurial与Subversion不相上下。
https://stackoverflow.com/questions/4671177
复制相似问题