2012-07-26 54 views
2

作爲MSBuild作業的一部分,我在CruiseControl.NET下運行自動化的hg合併。由於某些原因,即使我沒有在命令中指定-y,合併仍以非交互模式運行。這會導致意想不到的結果,因爲它在衝突提示時採取第一個選項,我寧願它超時並失敗,因此我們知道需要手動查看它。如何強制hg合併爲交互式?

於是兩個questons:

1)爲什麼運行時,我沒有給它一個-y非iteractively?
2)是否有辦法強制hg合併爲交互式,這樣作業會超時並失敗?

+0

我打賭它檢測到它沒有連接控制檯和不理智的事情 - 忽略交互模式。 – skolima 2012-07-27 08:14:11

+0

我也這麼認爲,但我不知道如何或爲什麼它檢測到它正在運行無頭或我可以做什麼來覆蓋它。 – user1102716 2012-07-27 17:39:14

+0

我能夠確認在MSBuild中運行hg使其以非交互模式運行。我也可以得到它的互動,迫使它在內部的MSBuild這樣一個單獨的命令窗口中運行運行:「啓動CMD/K " "e;」。然而,這會掛起和失敗,然後把回購放在一個混亂的,沒有解決的狀態,這會把其他的建設從軌道上拋出。雖然我得到了我想要的東西,但這不是我所需要的。我將嘗試通過在PoweShell而不是MSBuild中進行分類。感謝所有人的幫助。 – user1102716 2012-07-30 18:38:03

回答

2

我認爲更好的主意是使用hg merge --tool internal:merge。 Mercurial將嘗試進行自動合併,但如果存在任何衝突將會失敗。這裏有other options可能。

我每天用它從外部的ClearCase庫自動拉之後,它的偉大工程。如果有任何衝突比我的CI工作只是imediatelly失敗。

+0

謝謝,我會嘗試,但我不知道它是否會覆蓋我試圖阻止的非交互式行爲。 – user1102716 2012-07-27 17:40:35

+0

它沒有,仍然運行非交互式:(我嘗試了一些其他的選項從您鏈接,也沒有運氣。問題的部分原因可能是我遇到清單合併,不僅僅是文件的合併。對於examply其中一個文件源被修改,但刪除了目的地。這些被區別對待,我想絆倒提示連基本的內部合併的嘗試發生之前。 – user1102716 2012-07-27 21:44:42

+0

您正在使用什麼版本的安裝爲TortoiseHg的一部分嗎? – 2012-07-28 07:19:21

3

基於this answer on another question,它看起來像水銀自動檢測,如果它是一個TTY下運行或者是無頭的,因此不會提示您。你可以通過提供ui.interactive配置選項覆蓋此:

hg --config ui.interactive=yes