当Mercurial在cygwin下运行时,弄清楚如何生成WinMerge来解决合并冲突有点棘手。我怎样才能做到这一点?

最佳答案

诀窍在于cygwin路径与Windows路径不同,因此需要一个小脚本将cygwin路径转换为Windows路径,然后再将它们作为参数传递给WinMerge。

方法如下:

(1)在/usr/bin/winmerge中创建一个shell脚本,如下所示:

#!/bin/sh
"/cygdrive/c/Program Files/WinMerge/WinMergeU.EXE" /e /ub /dl other /dr local `cygpath -aw $1` `cygpath -aw $2` `cygpath -aw $3`


注意:cygpath转换路径名。如果WinMerge不在默认位置,请在此处更改路径。

(2)使该文件可执行

 chmod +x /usr/bin/winmerge


(3)将以下内容添加到您的~/.hgrc文件:

[ui]
merge = winmerge

[merge-tools]
winmergeu.executable=/usr/bin/winmerge
winmergeu.args=$other $local $output
winmergeu.fixeol=True
winmergeu.checkchanged=True
winmergeu.gui=False


注意!您可能已经有一个[ui]节,其中有您的名字。请记住,将我的更改与您的更改合并,而不仅仅是添加新的[ui]部分。例如,我的.hgrc如下所示:

[ui]
username = Joel Spolsky <[email protected]>
merge = winmergeu

[extensions]
fetch =

[merge-tools]
winmergeu.executable=/usr/bin/winmerge
winmergeu.args=$other $local $output
winmergeu.fixeol=True
winmergeu.checkchanged=True
winmergeu.gui=False

08-26 23:04