合并工具能够合并冲突的更改

时间:2009-10-23 01:16:20

标签: tortoisesvn merge resolution conflict tortoisemerge

我目前正在使用TortoiseSVN进行两个分支的合并,我发现它不够聪明,无法处理特定的合并事件。

在一个分支中,我有一个方法如下:

MyMethod(parameter1, parameter2, parameter3)

在另一个分支中,我有如下相同的方法:

MyMethod(parameter1, parameter2, parameter4)

TortoiseMerge注意到存在冲突但只允许我选择使用一种方法签名或另一种方法签名。但是,我真正想要的是将它合并为一个具有所有四个参数的方法,如下所示:

MyMethod(parameter1, parameter2, parameter3, parameter4)

目前解决此冲突的唯一方法是解析该行,以便两种方法都存在,然后手动转到文件并在冲突解决后更正它。

这只是事物的存在方式或是否有一个能够处理这种情况的智能合并工具?

5 个答案:

答案 0 :(得分:3)

我不明白吗?您的项目将无法编译,或者更糟糕的是,在合并后将无法正确运行,因为您想要的方法签名不在任何一个分支中。这不比冲突更危险吗?也许我错过了一些明显的东西。

IMHO TortoiseSVN(或者更确切地说是SVN客户端)在报告冲突方面做得很对,它需要人为干预。

答案 1 :(得分:0)

Araxis Merge因其力量而广受欢迎。我个人喜欢SourceGear DiffMerge,因为它更自由。

答案 2 :(得分:0)

AFAIK,除了将其报告为冲突外,没有合并工具可以提供帮助

您希望该工具将其合并为包含所有4个参数的单个函数调用。

  

MyMethod(parameter1,parameter2,   parameter3,parameter4)

这里也存在歧义,无论是先放置参数3还是放置参数4,反之亦然。

答案 3 :(得分:0)

到目前为止,我还没有找到任何可以自动执行此操作的工具。它甚至可能是不可能的。但我找到了一个我认为会报告的解决方法。

我最终安装了perforce visual merge,我发现它有一个比tortoise svn提供的默认更好的合并功能。我发现的一个很好的功能,我记不清乌龟合并了,它允许人们看到并编辑合并后的结果。因此,即使它无法自动合并我想要的行,我也可以在原位编辑冲突,而不是错误地解决它并在合并后手动更新它。

答案 4 :(得分:0)

我确定TortoiseSVN无法解决这个问题。更广泛地说,任何其他基于文本的合并/差异工具都不能:请记住,这些工具与您正在使用的语言无关,他们不会在语义上理解您的代码。他们只是制作一个“char by char”比较,而不是像编译器那样实际阅读,或者对这些字符表达的内容赋予意义。

如果您使用的语言中此类操作有些合法,也许您可​​以检查是否存在与该语言相关的内容。

至于合并时编辑的能力,TortoiseSVN实际上可以做到这一点。