使用mercurial和超越比较3(bc3)作为差异工具?

时间:2008-11-27 11:30:09

标签: version-control mercurial diff beyondcompare

在windows中我可以使用winmerge作为hg的外部diff工具使用 mercurial.ini 等。
使用一些你可以在网上找到的选项开关(我认为这是一个日本网站) 无论如何,在这里 例如:

hg winmerge -r1 -r2

将列出winmerge中rev1和rev2之间的文件更改。我可以点击哪个文件来区分

但对于bc3:

hg bcomp -r1 -r2

将使bc3打开一个对话框,表明无法找到临时目录。

我能用bc3和hg做的最多是

 hg bcomp -r1 -r2 myfile.cpp 

将打开myfile.cpp的rev1和rev2之间的差异

因此,似乎hg + bc3无法成功确认所有文件在修订版之间发生变化。 一次只能传播1个文件。
谁能更好地使用bc3 + hg?

编辑:问题解决了!

从http://www.scootersoftware.com/support.php?zz=kb_vcs.php>scooter支持页面获得解决方案。 我必须使用 bcompare 而不是 bcomp 这是我的mercurial.ini的片段

[extensions]
hgext.win32text =

;mhd adds
hgext.extdiff = 

;mhd adds for bc
[extdiff]
cmd.bc3 = bcompare
opts.bc3 = /ro

;mhd adds for winmerge
;[extdiff]
;cmd.winmerge = WinMergeU
;opts.winmerge = /r /e /x /ub

9 个答案:

答案 0 :(得分:31)

Beyond-Compare-3是一个了不起的工具。 我建议对设置进行一些调整:

[extensions]
extdiff =

[extdiff]
cmd.bcomp = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bcomp = /leftreadonly

[merge-tools]
bcomp.executable = C:\Program Files\Beyond Compare 3\BComp
bcomp.args = /leftreadonly /centerreadonly $local $other $base $output
bcomp.priority = 1

[ui]
merge = bcomp

[tortoisehg]
authorcolor = True
vdiff = bcomp

答案 1 :(得分:12)

我个人发现可以在Mercurial mergetools.rc file文件中找到最好的Beyond Compare配置:

[merge-tools]
....
; Windows version of Beyond Compare
beyondcompare3.args=$local $other $base $output /ro /lefttitle=local /centertitle=base /righttitle=other /automerge /reviewconflicts /solo
beyondcompare3.regkey=Software\Scooter Software\Beyond Compare 3
beyondcompare3.regname=ExePath
beyondcompare3.gui=True
beyondcompare3.priority=-2
beyondcompare3.diffargs=/lro /lefttitle='$plabel1' /righttitle='$clabel' /solo /expandall $parent $child

我还发现 NOT extdiff部分中包含Beyond Compare非常重要,因此它会使用beyondcompare3部分merge-tools diffargs参数。 (我在beyondcompare3ui.merge)中指定了tortoisehg.vdiff

答案 2 :(得分:3)

我必须添加以下内容才能使其在我的机器上运行:

[extensions]
extdiff =

[extdiff]
cmd.bc3 = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bc3 = /ro

答案 3 :(得分:3)

如果你不断从BC得到这个“文件夹不可用”错误(我做了,当我同时打开几个BC实例时),尝试在命令行中添加选项/solo,即:

[extdiff]
cmd.bcomp = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bcomp = /leftreadonly /solo

来源:Scooter Software support forum

答案 4 :(得分:3)

Checkout this page from the Scooter Software support page - 它还包括大多数版本控制系统的设置 - 一个用于我的书签列表!

段:

要配置Mercurial,您需要编辑文件%USERPROFILE%\ Mercurial.ini或$ HOME / .hgrc。使用现有的INI部分添加以下行(如果它们已存在):

差异

[extensions] extdiff =

[extdiff] 
cmd.bcomp = C:\Program Files\Beyond Compare 3\BCompare.exe
opts.bcomp = /ro

[tortoisehg] vdiff = bcomp 

设置完成后,您可以使用

比较命令行中的修订
hg bcomp -r <rev1> [-r <rev2>] [<filename>]

3-Way Merge(v3 Pro)

[merge-tools] 
bcomp.executable = C:\Program Files\Beyond Compare 3\BComp 
bcomp.args = $local $other
$base $output bcomp.priority = 1
bcomp.premerge = True bcomp.gui = True

[ui] merge = bcomp

答案 5 :(得分:1)

我尝试了当时给出的建议但没有效果。

我找到了以下作品:

  1. 将比较安装目录添加到yor系统path
  2. 之外
  3. 打开全局设置并将差异工具设置为bcompare
  4. 现在尝试差异 - 超越比较!

答案 6 :(得分:1)

到目前为止给出的所有答案都适用于Windows。这是我使用Linux的配置。

DIFF

[extensions]
extdiff =

[extdiff]
cmd.bcomp = bcompare
opts.bcomp = -ro1

4-Way Merge(v3 Pro)

[merge-tools]
bcomp.executable = bcompare
bcomp.args = -title1='First Parent' -title2='Second Parent' -title3='Common Ancestor' -title4='Output' -ro1 -ro2 -ro3 $local $other $base $output
bcomp.premerge = True
bcomp.gui = True

-ro#:禁用指定方的编辑

-title#=<title>:在路径编辑

中显示描述而不是文件名

#字符:1 =左,2 =右,3 =中心,4 =输出

有关bcompare的更多选项,只需在控制台中执行bcompare -help即可。

答案 7 :(得分:0)

如果您无法正确解析配置,请注意任何变量或部分名称的任何空格都会导致配置错误地解析。我一直在复制和粘贴不同的配置,并继续出错。它刚刚结束,在许多变量之前添加了空格,导致它不能解析。

答案 8 :(得分:0)

如果您使用的是TortoiseHg,可以通过选择File - &gt;将合并工具设置为Beyond Compare。设置,然后在TortoiseHg选项上,选择Visual Diff Tool和Three-way Merge Tool。此设置也会影响通过命令行设置的合并。