23

如何将 Apple 的 FileMerge 程序配置为 Mercurial 的合并工具?我的主目录中有我的 .hgrc 文件设置,我只想将 FileMerge 配置为合并程序。

4

5 回答 5

28

hg wiki中所述,这对我来说适用于各种版本的 hg:

  • 在您的某处创建一个脚本$PATH,例如/usr/local/bin
$ vim /usr/local/bin/opendiff-w

#!/bin/sh
# opendiff returns immediately, without waiting for FileMerge to exit.
# Piping the output makes opendiff wait for FileMerge.
opendiff "$@" | cat
  • 将以下部分添加到您的~/.hgrc:
[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = opendiff-w

[merge-tools]
filemerge.executable = opendiff-w
filemerge.args = $local $other -ancestor $base -merge $output

[extensions]
extdiff = 

现在您可以将其用作$hg opendiff.

于 2009-08-20T07:55:47.947 回答
2

更新:Mercurial wiki 有一个关于 FileMerge 的页面。先读那个。

我没有尝试使用FileMerge,但一般概述可能会有所帮助。Mercurial wiki 的MergeProgram页面中描述了您想了解的大部分内容。简短版本是您的典型选择是:

HGMERGE环境变量设置为指向所需的合并工具。

或者,将以下内容添加到您的.hgrc

 [ui]
 merge = /path/to/toolname

 [merge-tools]
 toolname.args = $base $local $other

关键是合并工具需要接受三个参数:基本版本、本地更改以及来自其他分支的更改。您使用第一个配置来指定工具,第二个配置来指定它如何接受参数。

于 2009-08-20T05:55:43.803 回答
1

如果没有修改,链接的文档都不适用于我;最终我最终做的是结合官方说明和来自https://www.mercurial-scm.org/wiki/TipsAndTricks的“使用 Vim 作为文件合并程序” 。我创建了此答案中描述的 opendiff-w 脚本(尽管我将其命名为 hgvdiff),并将以下内容放入我的 .hgrc 中:

[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = /usr/local/bin/hgvdiff

[merge-patterns]
** = filemerge

[merge-tools]
filemerge.executable = /usr/local/bin/hgvdiff
filemerge.args = $local $other -ancestor $base -merge $output
filemerge.checkchanged = true
filemerge.gui = true

[extensions]
extdiff =

这是适度的功能,尽管它有时会检查文件是否过早更改,从而导致一堆:

 output file wwwroot/zoomingo/website/protected/messages/en/z.php appears unchanged
was merge successful (yn)? n

当您关闭 FileMerge 时。

于 2013-03-19T00:33:51.677 回答
0

这是我修复它的方法:

创建/usr/local/bin/opendiff-w填充:

#!/bin/sh
# opendiff returns immediately, without waiting for FileMerge to exit.
# Piping the output makes opendiff wait for FileMerge.
opendiff "$@" | cat

然后运行命令:sudo chmod +x /usr/local/bin/opendiff-w

然后~/.hgrc使用以下添加进行编辑:

[extdiff]
cmd.interdiff = hg-interdiff
cmd.opendiff = opendiff-w

[merge-tools]
filemerge.executable = /usr/local/bin/opendiff-w
filemerge.args = $local $other -ancestor $base -merge $output

[extensions]
extdiff = 

然后我运行以下命令来检查它是否有效:hg opendiff

但是,我收到以下错误:

exception raised trying to run FileMerge: launch path not accessible

为了修复它,我运行了以下命令:

sudo /usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/

现在应该可以工作并打开 FileMerge。

==================================================== ===================

如果您使用的是 Mac 版 TorsoiseHg,您现在唯一需要做的就是使用 FileMerge 在 Resolve Conflict 窗口出现时从 Detected merge/diff 工具中选择 filemerge,然后选择 Tool Resolve。

在此处输入图像描述

希望这可以帮助。

于 2013-10-24T19:07:09.097 回答
-1

我还没有尝试过,但我打赌你需要一直指向 FileMerge 可执行文件,而不仅仅是应用程序包。

所以:

[ui]  
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge
于 2009-08-20T06:00:36.897 回答