SVN合并添加参数。 WTF?或者如何做大合并?

时间:2010-04-21 05:49:24

标签: svn tortoisesvn merge

我正在为分支进行SVN合并,在其中一个文件中我看到了:

GetQueryReferenceData(int sessionId, Int32 sessionId)

这意味着合并工具只是添加了另一个参数而没有提出任何问题。想象一下,如果它是对子串(0)的调用,而在另一个分支中它将是子串(0,2)。这是完全不同的行为,它如何决定选择哪一个?它在编译期间出现了好事。

问题是它不会被标记为冲突,并会自动合并。这是一种非常危险的行为,如果你没有为每行代码进行单元测试,你就会被搞砸。

如果没有合并工具无声地进行危险的更改,我做错了什么以及如何进行大合并?是否存在与语言无关的合并工具?

我正在使用Tortoise SVN。

2 个答案:

答案 0 :(得分:1)

所以,我不熟悉TortoiseSVN界面,但如果存在冲突,标准的subversion命令行实用程序会通知您冲突并允许您指定您想要的版本(“我的”,“他们的”)使用或是否愿意手动解决冲突。但请注意,如果合并/更新涉及不同的代码段(因此没有冲突),那么预期的行为是将应用任何更改(无论是对签名的更改还是其他更改)。因此,您应该问为什么您的开发人员选择更改变更集中的签名,而不是询问为什根据要求在工作目录中应用这些更改。

此外,如果您想阻止其他开发人员提取恶作剧并对代码进行重大更改,您可以创建在提交之前或之后运行的各种“挂钩”,以确保代码编译或执行任何自定义验证我想对代码进行相应的拒绝更改。

答案 1 :(得分:1)

没有询问可能意味着不同的事情。首先,您没有在本地更改该文件,或者没有在函数的特定区域中更改该文件,因此只有在修改了相同的行时才会发生冲突。没有任何工具会指向您进行此类更改。或者你可能使用了一个选项--accept ...当然你应该进行单元测试以确保这种情况安全。此外,没有版本控制工具可以更好地处理这种情况,因为没有版本控制工具依赖于语言。可能是使用IDE集成并在那里进行合并是个好主意,可能是支持更好。当然,在提交此类内容之前,您可以通过svn diff检查合并(检查修改)。