当Mercurial在cygwin下运行时,弄清楚如何生成WinMerge以解决合并冲突有点棘手。我怎么能这样做?
答案 0 :(得分:16)
诀窍是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 <spolsky@example.com>
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
答案 1 :(得分:0)
这是适用于Subversion / cygwin / WinMerge的shell脚本行。主要区别在于使用哪些参数。
/cygdrive/c/Program\ Files/WinMerge/WinMergeU.exe /e /ub /dl "$3" /dr "$5" "`cygpath -aw $6`" "`cygpath -aw $7`" &
请注意,此示例还设置了描述字段并在后台启动比较,以便一次性启动所有差异。如果你不喜欢,请删除'&amp;'。
如果您不知道您的修订控制程序通过了什么,请尝试在shell脚本中添加“echo $ @”。它将打印传递给脚本的参数。