【问题标题】:Using mercurial and beyond compare 3(bc3) as the diff tool?使用 mercurial 和 Beyond compare 3(bc3) 作为差异工具?
【发布时间】:2010-09-24 07:46:05
【问题描述】:

在 Windows 中,我可以使用 winmerge 作为 hg 的外部差异工具,使用 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 的 sn-p

[扩展] hgext.win32text = ;mhd 添加 hgext.extdiff = ;mhd 为 bc 添加 [扩展差异] cmd.bc3 = bcompare opts.bc3 = /ro ;mhd 为 winmerge 添加 ;[扩展差异] ;cmd.winmerge = WinMergeU ;opts.winmerge = /r /e /x /ub

【问题讨论】:

  • 感谢发帖,我刚碰到这个

标签: version-control mercurial diff beyondcompare


【解决方案1】:

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

[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

我还发现在extdiff 部分中包含 Beyond Compare 很重要,因此它将使用 merge-tools 部分中的 beyondcompare3diffargs 参数。 (我在ui.mergetortoisehg.vdiff 中都指定了beyondcompare3

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      差异

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

      4 路合并 (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即可。

      【讨论】:

      • 这会打开与 2.10 的 3 路合并 :(
      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        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
        

        【讨论】:

        • 你能解释一下“opts.bcomp = /leftreadonly”的作用吗?
        • 当开关名称声明“左只读”时,它会导致左侧为只读。由于左侧通常显示历史版本(由临时文件表示),因此尝试对其进行编辑或保存是没有意义的。
        • 使用 linux 版本的 BCompare 时,请务必在参数前加上 -- (--leftreadonly)。
        【解决方案6】:

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

        我发现了以下作品:

        1. 将安装目录添加到你的系统path
        2. 打开全局设置并将差异工具设置为bcompare

        现在试试差异 - 超越比较!

        【讨论】:

          【解决方案7】:

          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 路合并 (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
          

          【讨论】:

            【解决方案8】:

            如果您不断收到来自 BC 的“文件夹不可用”错误(当我同时打开了多个 BC 实例时,我确实遇到了),请尝试将选项 /solo 添加到命令行,即:

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

            来源:Scooter Software support forum

            【讨论】:

            • 谢谢,这完全救了我。 “独奏”有什么用?
            【解决方案9】:

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

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

            【讨论】:

            • 我不使用绝对路径因为我在windows环境路径中设置了bc3路径
            猜你喜欢
            • 1970-01-01
            • 2013-11-05
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-04
            • 2015-09-20
            • 2010-09-07
            相关资源
            最近更新 更多