有没有办法告诉颠覆“更新/合并,除非它会导致冲突”?
我知道您可以在运行更新之前使用--dry-run
/status -u
进行检查,但我经常让其他人运行更新并获取损坏的网页,因为他们没有注意到“C index.php”行。
我还注意到 svn 似乎对冲突并不太不满意——它仍然说“更新到修订版等等”并退出零,无论冲突如何。所以我必须逐行解析输出来发现它们。肯定有更好的方法吗?
有没有办法告诉颠覆“更新/合并,除非它会导致冲突”?
我知道您可以在运行更新之前使用--dry-run
/status -u
进行检查,但我经常让其他人运行更新并获取损坏的网页,因为他们没有注意到“C index.php”行。
我还注意到 svn 似乎对冲突并不太不满意——它仍然说“更新到修订版等等”并退出零,无论冲突如何。所以我必须逐行解析输出来发现它们。肯定有更好的方法吗?
您可以使用 --accept 参数来指示发生冲突时应该发生的情况:
--accept ARG : specify automatic conflict resolution action
('postpone', 'base', 'mine-full', 'theirs-full',
'edit', 'launch')
另见svnbook 中的交互式冲突解决页面
也许更好的方法是使用图形工具?或者编写一个脚本来执行更新,将输出重定向到一个文件并在最后执行“cat svnupdate.log | grep "^C "" 以向您显示任何冲突?
使用我使用的图形工具(TortoiseSVN 和 Netbeans),它们最后会发出令人讨厌的噪音,并为您提供一个合并选择对话框来处理它们。我不知道命令行工具具有如此强大的功能。
@jsight:TortoiseSVN 很棒,但我主要在 *NIX 环境中开发,没有 X。所以我通常使用(仅限于)命令行。
在你的脚本建议中,这就是我现在正在做的事情——这就是为什么我对我不能只检查 $? 感到恼火的原因。现在我正在跳过“输出到文件”并使用管道,但除此之外正是您所描述的。
您可以使用 --diff3-cmd 参数来指定要使用的合并工具(通常是来自 diffutils 的 diff3)。
您还可以使用预提交脚本来查找文件中的冲突标记,并在它们存在时阻止提交。
Subversion 1.5(最近发布)增加了一些能力来指定更新冲突期间发生的事情,使用“--accept”参数。