我可以在Subversion中关闭自动合并吗?

时间:2020-03-05 18:50:39  来源:igfitidea点击:

我们正在考虑从版本控制系统的签出/编辑/签入样式过渡到Subversion,在评估过程中我们发现,当我们在TortoiseSVN(可能是在任何Subversion客户端中)执行Update操作时,如果存储库中需要应用于已编辑文件的更改没有引起任何冲突,则它们将自动/静默合并。

这使我们有些害怕,因为这种合并有可能在不产生任何编译错误的情况下,至少会引入一些逻辑错误,这些错误可能很难被发现。

非常简单的示例:我正在使用Cmethod修改方法的后半部分中的某些逻辑,而其他人将变量的值更改为方法开始时的初始值。另一个人的更改不在我正在编写的代码行中,因此不会发生冲突;但可能会大大改变该方法的输出。

我们希望情况是,如果需要进行合并,则将显示两个文件,并至少显示一个简单的接受/拒绝更改选项,以便至少我们知道某些内容已更改,并且可以选择是否影响我们的代码。

有没有办法用Subversion / TortoiseSVN做到这一点?还是我们过多地停留在目前的工作方式上,应该让它做事情...

解决方案

回答

这是TortoiseSVN的一个窍门:

如何在Subversion中关闭自动合并

svn.exe的窍门是将svn外部差异工具设置为不断失败的程序。

svn --diff-cmd=/bin/false

如果外部diff程序失败,svn会得出结论是无法解决冲突,因此不会合并冲突。

回答

解决此问题的最佳方法是教育开发人员。
在TortoiseSVN中进行更新后,它将显示受影响文件的列表。只需双击每个文件,即可发现它们之间的差异。然后,我们将能够看到版本与最新存储库版本之间发生了什么变化。

回答

我建议我们尽可能学习使用自然的Subversion模型。在实践中,我们发现冲突很少见,并且我们谈论的逻辑冲突类型几乎不存在(我无法在存储库中回顾过去四年中的实例)。

团队成员应尽可能小范围地检入更改(同时保持正确性),而不是整天检查一次以将其检入。这将减少踩别人的工作的可能性。

如果我们担心某个特定更改,则我们正在执行Subversion确实提供了一种锁定机制,可以防止对该文件进行其他更改。请参阅《红皮书》中有关锁定的章节。