如何使用p4merge作为Mercurial的merge / diff工具?

有谁知道如何设置Mercurial使用p4merge作为OS X 10.5的合并/比较工具?

把它放到你的~/.hgrc (或者,也可以在你的Windows上的Mercurial.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或更新版本。 很明显,您需要更新该可执行文件的path,以反映安装p4merge的位置。

我发现Ry4an的答案是一个很好的解决scheme,除了一个小问题,它使p4merge(在mac os下)混合了命令input。 在他的答案中描述所有内容,并在[merge-tools]部分添加以下行

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

这一行告诉mercurial p4merge以什么顺序接受它的参数。

我正在使用TortoiseHg的1.0.1版本,并且p4merge开箱即用。

只需进入全局设置 – > TortoiseHg并select以下选项:

  • 三路合并工具:p4merge
  • Visual Diff工具:p4merge

截图

也许是因为我在Windows上工作,但提出的解决scheme并不适合我。 相反,下面的工作。

~/.hgrc/ Mercurial.ini ,我应用了以下更改:

启用“ExtDiff”扩展名:

 [extensions] hgext.extdiff = 

增加了P4 extdiff命令:

 [extdiff] cmd.p4diff = p4merge 

将其configuration为默认的可视化差异工具:

 [tortoisehg] vdiff = p4diff 

我使用下面的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])) 

我不确定mercurial是如何启动一个外部diff工具? 希望这是简单的调整上面的行2和5成为“签入”和“当前工作副本”的参数的索引。

我猜是有一个CLI工具p4merge(我什么都不知道)。

我写了一篇关于使用Changes.app的博客文章,以及Mercurial的一些其他GUI工具: 使用Mercurial和GUI工具。

基本上,你需要知道加载diff工具的CLI工具的调用期望值。 IE,如何使它从一个特定的文件加载数据,以及如何让它等待退出。 这个post应该有足够的信息给你一些想法。