如何将p4merge用作Mercurial的合并/差异工具?

时间:2020-03-05 18:47:24  来源:igfitidea点击:

有谁知道如何设置Mercurial以将p4merge用作OS X 10.5上的合并/差异工具?

解决方案

回答

我猜有一个p4merge的CLI工具(我一无所知)。

我写了一篇博客文章,介绍如何将Changes.app和其他一些GUI工具与Mercurial一起使用:将Mercurial与GUI工具一起使用。

基本上,我们需要了解加载diff工具的CLI工具的调用期望。 IE,如何使其从特定文件加载数据,以及如何使其等待退出。帖子上应该有足够的信息,可以给我们一些想法。

回答

我使用以下Python启动p4merge并将其与git结合使用:

#!/usr/bin/python
import sys
import os

os.system('/Applications/p4merge.app/Contents/MacOS/p4merge "%s" "%s"' % (sys.argv[2], sys.argv[5]))

我不确定启动外部差异工具的效果如何?希望这就像将上一行中的2和5调整为"已签入"和"当前工作副本"的参数索引一样简单。

回答

将其放入〜/ .hgrc(或者Windows上的Merurial.ini)中:

[merge-tools]
p4.priority = 100
p4.premerge = True  # change this to False if you're don't trust hg's internal merge
p4.executable = /Applications/p4merge.app/Contents/MacOS/p4merge
p4.gui = True
p4.args = $base $local $other $output

需要Mercurial 1.0或者更高版本。显然,我们需要更新该可执行文件的路径,以反映我们在哪里安装了p4merge。

回答

我发现Ry4an的答案是一个很好的解决方案,除了一个小问题,它使p4merge(在Mac OS上)混淆了命令输入。按照他的答案中所述执行所有操作,并在[merge-tools]部分中添加以下行:

p4.args=$base $local $other $output

这行告诉Mercurial p4merge接受参数的顺序。

回答

也许是因为我在Windows上工作,但是建议的解决方案对我却不起作用。而是,下面的工作。

〜/ .hgrc //Mercurial.ini中,我进行了以下更改:

启用的" ExtDiff"扩展名:

[extensions]
hgext.extdiff =

添加了P4 extdiff命令:

[extdiff]
cmd.p4diff = p4merge

将其配置为默认的视觉差异工具:

[tortoisehg]
vdiff = p4diff

回答

我使用的是TortoiseHg的1.0.1版本,p4merge可以直接使用。

只需转到全局设置-> TortoiseHg并选择以下选项:

  • 三向合并工具:p4merge
  • 视觉差异工具:p4merge