如何在 cygwin 下配置 Mercurial 以使用 WinMerge 进行合并?
当 Mercurial 在 cygwin 下运行时,弄清楚如何生成 WinMerge 来解决合并冲突有点棘手。 我怎样才能做到这一点?
When Mercurial is running under cygwin, it's a bit tricky to figure out how to spawn WinMerge to resolve merge conflicts. How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
诀窍在于 cygwin 路径与 Windows 路径不同,因此您需要一个小脚本来将 cygwin 路径转换为 Windows 路径,然后再将它们作为参数传递给 WinMerge。
操作方法如下:
(1) 在
/usr/bin/winmerge
中创建shell脚本,如下所示:注意:
cygpath
转换路径名。 如果 WinMerge 不在默认位置,请在此处更改路径。(2) 使该文件可执行
(3) 将以下内容添加到您的
~/.hgrc
文件中:注意! 您可能已经有一个 [ui] 部分,其中包含您的名字。 请记住将我的更改与您的更改合并,而不仅仅是添加新的 [ui] 部分。 例如,我的 .hgrc 如下所示:
The trick is that cygwin paths are not the same as Windows paths, so you need a little script that converts the cygwin paths to Windows paths before passing them as arguments to WinMerge.
Here's how to do it:
(1) Create a shell script in
/usr/bin/winmerge
as follows:Note:
cygpath
converts path names. If WinMerge isn't in the default location, change the path here.(2) Make that file executable
(3) Add the following to your
~/.hgrc
file:Note! You probably already have a [ui] section with your name in it. Remember to merge my changes with yours, don't just add a new [ui] section. For example, my .hgrc looks like this:
以下是适用于 Subversion/cygwin/WinMerge 的 shell 脚本行。 主要区别在于使用哪些参数。
请注意,此示例还设置了描述字段并在后台启动比较,以便立即启动所有差异。 如果您不喜欢这样,请删除“&”。
如果您不知道修订控制程序正在向您传递什么,请尝试将“echo $@”添加到您的 shell 脚本中。 它将打印传递给脚本的参数。
Here is the shell script line that works for Subversion/cygwin/WinMerge. The main difference is which arguments to use.
Note that this example also sets the description fields and launches the comparisons in the background, so that all diffs are launched at once. If you don't like that, remove the '&'.
If you don't know what your revision control program is passing you, try adding 'echo $@' to your shell script. It will print the arguments passed to the script.