【问题标题】:Mercurial: Creating a diff of two commitsMercurial:创建两个提交的差异
【发布时间】:2010-05-03 19:58:09
【问题描述】:

有没有办法用 mercurial 获取两次提交的更改? 第二次提交不是直接在第一次之后,它们之间还有一些其他的。

我试过了

hg diff [some params] --change xxxxx --change yyyyy > file.patch

但这仅包括最后一个变更集。

如果没有办法用 hg 实现这一点,是否有组合补丁的工具?

【问题讨论】:

    标签: mercurial diff


    【解决方案1】:

    我在试图弄清楚这件事时来到了这个页面。我通过hg help diff 找到了我的解决方案。

    hg diff -r <rev> -r <rev> 满足我的需要(两个标签之间的差异)

    【讨论】:

    • 您可以区分任意两个修订版,它们不需要标记。
    • 如果提交不是一个接一个,对我不起作用。在这种情况下,它还包括它们之间的所有内容,这正是需要避免的。
    • 我发现--only-files-in-revs 标志在代码库很大时对此很有用,它可以强制hg 只查看在修订版中修改的文件 (hg diff -r <rev> -r <rev> --only-files-in-revs)。
    • 选项 --only-files-in-revs 在 Mercurial v5.7.1 中不可用
    【解决方案2】:

    外部差异

    extdiff 扩展将允许您使用您喜欢的外部差异工具。就我而言,我每天都使用 meld 运行这种类型的命令

    hg meld -r <rev1> -r <rev2>

    首先在扩展部分启用 extdiff 扩展(我也启用了搁置和记录)

    [extensions]
    shelve =
    record =
    hgext.extdiff =
    

    然后添加此部分...

    [extdiff]
    cmd = meld
    cmd.meld = /usr/bin/meld
    

    到您的 .hgrc 文件。显然将 meld 替换为用于启动首选工具的命令

    【讨论】:

    • 我认为我们应该先启用 extdiff 扩展,所以整个 .hgrc 是[extensions] extdiff = [extdiff] cmd.extdiff = meld
    • @Asaka - 感谢您发现这一点。
    【解决方案3】:

    出口?每个变更集一个补丁文件,类似于

    hg export --output %r.patch --rev A --rev B

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 2016-04-10
      • 1970-01-01
      • 2015-02-28
      • 2021-09-01
      • 1970-01-01
      • 2015-05-14
      相关资源
      最近更新 更多