Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何配置Mercurial在cygwin下使用WinMerge进行合并?_Mercurial_Merge_Cygwin_Winmerge - Fatal编程技术网

如何配置Mercurial在cygwin下使用WinMerge进行合并?

如何配置Mercurial在cygwin下使用WinMerge进行合并?,mercurial,merge,cygwin,winmerge,Mercurial,Merge,Cygwin,Winmerge,当Mercurial在cygwin下运行时,弄清楚如何生成以解决合并冲突有点棘手。我如何才能做到这一点?诀窍在于cygwin路径与Windows路径不同,因此您需要一个小脚本,将cygwin路径转换为Windows路径,然后再将其作为参数传递给WinMerge 以下是如何做到这一点: (1) 在/usr/bin/winmerge中创建shell脚本,如下所示: #!/bin/sh "/cygdrive/c/Program Files/WinMerge/WinMergeU.EXE" /e /ub

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

诀窍在于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]部分。例如,my.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
[ui]
用户名=Joel Spolsky
merge=winmergeu
[延期]
取回=
[合并工具]
可执行文件=/usr/bin/winmerge
args=$other$local$output
winmergeu.fixeol=True
winmergeu.checkchanged=True
winmergeu.gui=False

以下是适用于Subversion/cygwin/WinMerge的shell脚本行。主要区别在于要使用哪些参数

/cygdrive/c/Program\ Files/WinMerge/WinMergeU.exe /e /ub /dl "$3" /dr "$5" "`cygpath -aw $6`" "`cygpath -aw $7`" &
请注意,此示例还设置了描述字段并在后台启动比较,以便一次启动所有差异。如果不喜欢,请删除“&”


如果您不知道修订控制程序传递给您的是什么,请尝试将“echo$@”添加到shell脚本中。它将打印传递给脚本的参数

我可能不会将该脚本放在/usr/bin/中。我本来打算因为你不使用cygpath而惩罚你,但后来我滚动了代码块,看到了你在做什么。