颠覆中的合并比团队基础系统更困难吗?

时间:2009-05-07 05:15:20

标签: svn version-control tfs merge comparison

我习惯使用TFS,我的公司现在正在转换到新项目的SVN(主要原因是在同一源代码控制下更好地整合我们的java& .Net代码库)。

我了解颠覆中的合并很难(Jeff mentioned this在他的最新播客中)。

  1. 与TFS相比,颠覆有什么问题?
  2. 如何缓解? (有了颠覆的界限,或者像杰夫提出的那样,选择另一个源控制)
  3. TFS提供的一个强大功能是其自动充电功能(在TFS2008中有很大改进,虽然还不完美)。大多数合并不需要用户执行任何操作。在颠覆中是一样的吗?

    更新 - 此处接受的答案只能来自在 TFS 颠覆中经历过大合并的人,并且可以实际比较&安培;对比两者。知道“颠覆合并是好的”或“TFS是垃圾”并不能真正帮助我做出决定,因为它是主题。如果你可以与其他替代方案进行比较,那就太棒了 - 这很有用。但我的重点是颠覆与TFS。

    我感兴趣的目标团队规模是6-30名活跃的开发人员。

    更新2 - 是否有人认为SVN合并的情况实际上比TFS更容易(考虑工具)?

6 个答案:

答案 0 :(得分:6)

我在TFS和Subversion中都进行了大合并。 TFS代码库是SharePoint应用程序的1.5-> 2.0分支,生产更改合并到2.0代码库中。 SVN合并是将fork中的新功能合并到基线源中。

您已经熟悉TFS,所以除了说changesets和TFS工具使这个过程变得非常简单之外,我将为您提供详细信息。由于取消删除问题,我们确实收到了TF14087错误,但很快就解决了。

在SVN中,这个过程非常简单,因为我们不得不在SVN中定位文件的特定版本,而SVN对文件进行了扩展,这些文件不允许我们在TFS中使用变更集的灵活性(例如as“并非ChangesetA中的所有更改,但ChangesetB中的所有更改”)。我们当时没有合并跟踪,我们的源代码树也不是为了支持SVN合并跟踪的最佳实践。

我认为,现在,通过SVN中的合并跟踪,假设您遵循CollabNet概述的最佳实践,该过程将会更加简单。但请记住,TFS是一个很棒的产品,有很好的GUI工具来管理你的源代码,而SVN更多地依赖于命令行,所以如果你习惯使用GUI,这会让事情变得复杂。

答案 1 :(得分:5)

我不认为颠覆中的合并对于常见情况来说都很难,看看像these这样的例子。我发现合并简单易行;虽然有些同事抱怨更喜欢CVS,其他人抱怨等等。我怀疑其中很多都与熟悉其他工具有关,而与技术优势/劣势无关。

可能更复杂(三向)的合并更难,但问题是那些常用的是那些。我个人认为复杂的合并(和长寿命的分支,复杂的分支跟踪和合并策略等)代码腐烂的气味(或者我猜SCM腐烂)。 YMMV。

答案 2 :(得分:4)

我不熟悉TFS,但在版本1.5之前,subversion的合并支持仅仅包括(手动指定的)修订版本的差异,并将其应用于存储库中的另一个路径。在版本1.5中,实现了合并跟踪,但它似乎是rather complex有趣的边缘情况。

如果合并对您至关重要,您可能希望考虑其中一个擅长合并的DVCS,例如gitmercurial

答案 3 :(得分:3)

我已经使用了很长一段时间的颠覆,让我告诉你,合并是可怕的,绝对是破碎的。我已经改为mercurial,即使我没有使用分布式的东西,只是为了让分支有效。

按要求详细说明 要在SVN中成功合并,您需要(ed)知道分支所携带的版本号,只要您只进行一次合并回主干,就不难找到。不幸的是,有时你需要多次合并(即,事实证明,首先要添加一个你必须修复bug的功能)到主干,或者你正在不同的分支之间进行合并,这使得无法跟踪哪个版本number属于哪个分支以及之前已合并的内容。

我使用的SVN版本是1.5.1,所以它应该适用于新的样式开发,虽然看起来我错过了。

答案 4 :(得分:0)

有点偏离主题,但如果从你的Java开发人员的TFS转移的问题仍然悬而未决,我建议你看看Teamprise。它是专为使用TFS的Java开发人员而设计的工具。它为Eclipse用户提供了eclipse中大部分Visual Studio集成功能(有些甚至更好)。

http://www.teamprise.com/

(仅供参考,我不以任何方式与他们有任何关系......)

Vaccano

答案 5 :(得分:0)

所有系统都有利弊。

但是一个有用的注释(接近主题)是一个外部强大的merge / diff程序通常非常有用。 因此,无论您选择什么,请确保您有一个很好的3向合并工具,以帮助自动化的东西中断。

BR 约翰