【发布时间】:2012-07-26 23:58:56
【问题描述】:
作为 MSBuild 作业的一部分,我正在 CruiseControl.NET 下运行自动 hg 合并。由于某种原因,即使我没有在命令中指定-y,合并也会在非交互模式下运行。这会导致意外结果,因为当提示冲突时它采用第一个选项,我宁愿它只是超时并失败,所以我们知道我们需要手动查看它。
所以两个问题:
1) 为什么在我没有给它-y 时它会以非迭代方式运行?
2) 有没有办法强制 hg 合并是交互式的,这样作业就会超时并失败?
【问题讨论】:
-
我打赌它检测到它没有连接控制台并且做的是理智的事情 - 忽略交互模式。
-
我也这么认为,但我不知道它如何或为什么检测到它正在无头运行,也不知道我能做些什么来覆盖它。
-
我能够确认在 MSBuild 中运行 hg 会使其以非交互模式运行。我还可以通过强制它在 MSBuild 中的单独命令窗口中运行,使其以交互方式运行,如下所示:“start cmd /k "
"e;”。但是,这会挂起并失败,然后使 repo 处于混乱、未解决的状态,这会使其他构建脱离轨道。虽然我得到了我想要的,但这不是我需要的。我将尝试通过在 PoweShell 而不是 MSBuild 中执行此操作来解决此问题。感谢大家的帮助。
标签: mercurial msbuild merge cruisecontrol.net interactive