Subversion:有冲突时失败更新?

时间:2008-08-28 21:44:09

标签: svn command-line merge conflict

有没有办法告诉subversion“更新/合并,除非它会导致冲突”?

我知道您可以在运行更新之前使用--dry-run / status -u进行检查,但我经常让其他人运行更新并获取损坏的网页,因为他们没有注意到“C index.php”线。

我也注意到svn似乎对冲突似乎不太满意 - 它仍然说“更新到修订版”并且退出零,无论冲突如何。所以我必须解析逐行输出才能发现它们。当然有更好的方法吗?

6 个答案:

答案 0 :(得分:3)

您可以使用--accept参数指示发生冲突时应该发生的事情:

--accept ARG             : specify automatic conflict resolution action
                          ('postpone', 'base', 'mine-full', 'theirs-full',
                          'edit', 'launch')

另请参阅svnbook中的interactive conflict resolution页面

答案 1 :(得分:1)

也许更好的方法是使用图形工具?或者编写一个脚本来进行更新,将输出重定向到一个文件,并在最后执行“cat svnupdate.log | grep”^ C“”以显示任何冲突?

使用我使用的图形工具(TortoiseSVN和Netbeans),它们会在最后产生令人讨厌的噪音,并为您提供合并选择对话框来处理它们。我不知道命令行工具具有相同的功能。

答案 2 :(得分:1)

@jsight:TortoiseSVN很棒,但我主要是在* NIX环境中开发,没有X.所以我通常使用(限制)命令行。

在你的脚本建议中,这就是我现在正在做的事情 - 这就是为什么我很生气,我不能只检查$?现在我正在跳过“输出到文件”并使用管道,但其他方面正是你所描述的。

答案 3 :(得分:1)

您可以使用--diff3-cmd参数指定要使用的合并工具(通常来自diffutils的diff3)。

答案 4 :(得分:0)

您还可以使用预提交脚本在文件中查找冲突标记,并在存在时阻止提交。

答案 5 :(得分:0)

Subversion 1.5(最近发布)增加了一些指定更新冲突期间发生的事情的能力,带有“--accept”参数。