【问题标题】:How to configure Mercurial to use Kompare when merging?合并时如何配置 Mercurial 以使用 Kompare?
【发布时间】:2010-04-20 11:21:07
【问题描述】:

我尝试将merge=kompare 添加到我的~/.hgrc,但是当我运行hg merge 时,它会运行kompare,但看不到任何UI。 Hg 说merging path/to/first-file,然后呆在那里,一动不动。

【问题讨论】:

    标签: mercurial merge diff


    【解决方案1】:

    之前发布的kompare.args 可能无法正常工作。我在使用 Kompare 进行合并时遇到了困难,尤其是 3 路合并(这是首选且安全的)。 顺便说一句,我相信大多数其他选项默认启用,但您可以通过以下方式验证:hg showconfig merge-tools

    你最好使用 kdiff3。如果您使用的是 Ubuntu Intrepid,kdiff3 会被错误地从存储库中删除 - 但您可以轻松地从源代码编译。

    【讨论】:

    • 是的,我最终也选择了 kdiff3。
    • 那么你是如何为 mercurial 配置 kdiff3 的?
    【解决方案2】:

    您还需要添加一个部分来解释如何调用 Kompare。我不知道 Kompare,所以我不知道命令行应该是什么样子(不能保证 kompare.args 行),但应该是这样的:

    [merge-tools]
    kompare.executable = C:\<path...>\kompare.exe
    kompare.args = $base $local $other -o $output
    kompare.priority = 1
    kompare.gui = True
    kompare.binary = True
    

    如果未正确检测到合并,您可能需要添加

    kompare.checkconflicts = True
    kompare.checkchanged = True
    

    【讨论】:

    • kompare.args 完全错误;这些对于 kdiff3 可以正常工作,但对于 kompare 没有意义。例如,-o 表示“这将打开 URL1 并期望它是 diff 输出。”显然情况并非如此。最重要的是,kompare 不做 3 路合并,所以给它 3 个文件是没有意义的。
    • @scvalex:感谢您提供的信息。正如我所写,我不知道 Kompare(当我的答案被接受时也没有进一步研究)。当然,如果它无论如何都不能进行 3 路合并,我猜在 Mercurial 中使用它并不是一个好主意。我仍然想更正我的答案 - 你能帮我吗?
    【解决方案3】:

    Kompare 不支持 3-way diffs,因此它只能用于 Visual Diff 功能。这是使其工作的配置:

    [merge-tools]
    kompare.executable = kompare
    kompare.diffargs = -c $parent $child
    kompare.gui = True
    

    注意diffargs 字段而不是args

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-21
      • 2013-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多