我在CruiseControl.NET下运行自动化hg合并,作为MSBuild作业的一部分。由于某种原因,即使我没有在命令中指定-y
,合并也以非交互模式运行。这导致了意想不到的结果,因为它在提示冲突时采用第一个选项,我宁愿它超时并且失败所以我们知道我们需要手动查看它。
所以两个问题:
1)当我没有给它-y
时,为什么它以非迭代方式运行?
2)有没有办法强制hg合并是交互式的,这样作业就会超时并失败?
答案 0 :(得分:3)
基于this answer on another question,看起来Mercurial会自动检测它是在TTY下运行还是无头,因此不会提示您。您可以通过提供ui.interactive
配置选项来覆盖它:
hg --config ui.interactive=yes
答案 1 :(得分:2)
我认为更好的想法是使用hg merge --tool internal:merge
。 Mercurial将尝试进行自动合并,但如果存在任何冲突,则会失败。这里有other options可能。
我在从外部ClearCase存储库自动拉取后每天使用它并且效果很好。如果有任何冲突,那么我的CI工作就会失败。