2013-11-22 106 views
7

我的mercurial安裝拒絕通過命令行進行合併。打開verbosedebug後,輸出如下。Mercurial無法通過命令行合併

C:\src\StackOverflow>hg resolve --all --verbose --debug 
couldn't find merge tool codecompare_diff 
couldn't find merge tool codecompare_merge 
couldn't find merge tool bcompare 
couldn't find merge tool beyondcompare3 
couldn't find merge tool beyondcompare3-noauto 
couldn't find merge tool rekisa 
couldn't find merge tool UltraCompare 
couldn't find merge tool araxis 
couldn't find merge tool meld 
couldn't find merge tool diffuse 
picked tool 'kdiff3' for StackOverflow/StackOverflow.csproj (binary False symlink False) 
merging StackOverflow/StackOverflow.csproj 
my StackOverflow/[email protected]+ other StackOverflow/[email protected] ancestor StackOverflow/[email protected] 
The system cannot find the path specified. 
merging StackOverflow/StackOverflow.csproj failed! 

注意:合併實際上是成功的(kdiff3彈出,我合併並保存),但mercurial感到困惑。

如何確定哪些path無法通過水銀髮現?

我試圖更新到最新版本(2.8),並看着我mercurial.ini任何可疑文件。我也使用了不同的合併工具,p4merge,達到同樣的效果。

+1

也許你應該把它遷移到[元],因爲它是關於SO? –

+1

這不是關於這個:它是關於Mercurial。我正在檢查的項目名爲StackOverflow,但在上下文中無關緊要:-) – Sklivvz

+0

您是否從一個新盒子的「克隆」中嘗試過它?似乎是一個'系統'問題,而不是Mercurial。 – santiagopim

回答

0

嗯......其實。

這可能是愚蠢的「解決方案」,但你可以看到filemerge.py文件應該有水銀。 該文件定義了mercurial如何進行合併(調用外部合併工具,處理結果等)。

在這裏你看到filemerge函數內以下行:

ui.debug("picked tool '%s' for %s (binary %s symlink %s)\n" % 
       (tool, fd, binary, symlink)) 
    [...] 
     ui.status(_("merging %s\n") % fd) 

    ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca)) 

他們在給你的輸出記者的消息:

picked tool 'kdiff3' for StackOverflow/StackOverflow.csproj (binary False symlink False) 
merging StackOverflow/StackOverflow.csproj 
my StackOverflow/[email protected]+ other StackOverflow/[email protected] ancestor StackOverflow/[email protected] 

然後_xmerge功能從filemerge函數調用以下行:

needcheck, r = func(repo, mynode, orig, fcd, fco, fca, toolconf, 
         (a, b, c, back)) 
某處 ui.debug("my %s other %s ancestor %s\n" % (fcd, fco, fca))ui.warn(onfailure % fd)之間

merging StackOverflow/StackOverflow.csproj failed! 

是有原因的,爲什麼ui.warn(onfailure % fd)是:

然後是ui.warn(onfailure % fd)無論是在線路334或線368(我不知道),這給你的最後一條錯誤信息到達實際上達到了(可能在_xmerge)。您可以嘗試通過在filemerge.py文件的各個位置插入各種調試輸出並重試合併來發現它。這就是我現在可以推薦的(因爲我無法在我的機器上重現您的錯誤和上下文)。


P.S:作爲santiagopim建議,你可能更願意WC複製到乾淨的PC用乾淨的善變安裝並重新出現。由於錯誤很可能是由一些錯誤配置引起的。但是,如果你喜歡嘗試解決就地問題...