如何将 Apple 的 FileMerge 程序配置为 Mercurial 的合并工具?我的主目录中有我的 .hgrc 文件设置,我只想将 FileMerge 配置为合并程序。
5 回答
如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
.
更新:Mercurial wiki 有一个关于 FileMerge 的页面。先读那个。
我没有尝试使用FileMerge
,但一般概述可能会有所帮助。Mercurial wiki 的MergeProgram页面中描述了您想了解的大部分内容。简短版本是您的典型选择是:
将HGMERGE
环境变量设置为指向所需的合并工具。
或者,将以下内容添加到您的.hgrc
:
[ui]
merge = /path/to/toolname
[merge-tools]
toolname.args = $base $local $other
关键是合并工具需要接受三个参数:基本版本、本地更改以及来自其他分支的更改。您使用第一个配置来指定工具,第二个配置来指定它如何接受参数。
如果没有修改,链接的文档都不适用于我;最终我最终做的是结合官方说明和来自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 时。
这是我修复它的方法:
创建/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。
希望这可以帮助。
我还没有尝试过,但我打赌你需要一直指向 FileMerge 可执行文件,而不仅仅是应用程序包。
所以:
[ui]
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge