为Apple Mac OS X配置Mercurial - FileMerge

时间:2009-08-20 05:29:37

标签: configuration mercurial macos filemerge

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

5 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

更新:Mercurial wiki有一个page about FileMerge。先读一下。

我没有尝试使用FileMerge,但总体概述可能有所帮助。您想知道的大多数内容都在Mercurial wiki的MergeProgram页面中进行了描述。简短版本是您的典型选择:

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

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

 [ui]
 merge = /path/to/toolname

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

关键是合并工具需要采用三个参数:基本修订,本地更改以及其他分支的更改。您可以使用第一个配置来指定工具,第二个配置指定参数的使用方式。

答案 2 :(得分:1)

未经修改,链接的文档都没有为我工作;最终我最终做的是从the official instructions开始https://www.mercurial-scm.org/wiki/TipsAndTricks和“使用Vim作为filemerge程序”的组合。我创建了this answer中描述的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时。

答案 3 :(得分: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。

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

如果您正在使用TorsoiseHg for Mac,那么为了使用FileMerge,您现在唯一需要做的就是在出现Resolve Conflict窗口时从Detected merge / diff工具中选择filemerge并选择Tool Resolve。

enter image description here

希望这有帮助。

答案 4 :(得分:-1)

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

所以:

[ui]  
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge
相关问题