如何配置Apple的FileMerge程序以充当Mercurial的合并工具?我在我的主目录中设置了.hgrc文件,我只想将FileMerge配置为合并程序。
答案 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。
希望这有帮助。
答案 4 :(得分:-1)
我还没试过,但我打赌你需要一直指向FileMerge可执行文件,而不仅仅是应用程序包。
所以:
[ui]
merge = /Developer/Applications/Utilities/FileMerge.app/Contents/MacOS/FileMerge