Subversion:发生冲突时更新失败?

时间:2020-03-05 18:44:42  来源:igfitidea点击:

有没有一种方法可以告诉Subversion"更新/合并,除非会引起冲突"?

我知道我们可以在运行更新之前使用--dry-run/status -u进行检查,但是我经常让其他人运行更新并破坏网页,因为他们没有注意到" C index.php"这一行。

我还注意到svn对于冲突似乎不太满意,它仍然说"更新至修订版本",并且无论冲突如何都退出零。因此,我必须逐行分析输出以发现它们。当然有更好的方法吗?

解决方案

回答

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

使用我使用的图形工具(TortoiseSVN和Netbeans),它们最终会发出讨厌的声音,并为我们提供用于处理它们的合并选择对话框。我不知道命令行工具具有如此强大的功能。

回答

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

根据脚本建议,这就是我现在正在研究的内容,这就是为什么让我烦恼的是我不能只检查$?。现在,我正在跳过"输出到文件"并使用管道,但是其他方面正是我们所描述的。

回答

我们可以使用--diff3-cmd参数指定要使用的合并工具(通常是diffutils中的diff3)。

回答

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

回答

我们可以使用--accept参数指示发生冲突时应发生的情况:

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

另请参见svnbook中的交互式冲突解决页面

回答

Subversion 1.5(最近发布)添加了一些功能,可以使用" --accept"参数指定在更新冲突期间发生的情况。