如何在mercurial中显示特定于diff命名分支的diff

时间:2011-01-19 02:25:06

标签: mercurial

假设我有一个名为branch foo的两个提交a,b:

      a       b       c  
------o-------o-------o------- # default
       \          d         e
        ----------o---------o  # branch foo

我想看到a和e之间的差异(不包括在内)。我当然可以使用修订版ID,但这不太实用。在git中,可以做git diff master..foo。我怎样才能在hg中做同样的事情?

4 个答案:

答案 0 :(得分:33)

您可以使用revsets

在您的具体示例中,我认为您可以使用以下内容获取de的列表:

hg log -r "branch('foo') - branch('default')"

其中-定义为:

"x - y"
      Changesets in x but not in y.

从a到e的diff可以完成:

hg diff -r "ancestor(default, foo)" -r foo

虽然可能是我没有看到的简写。

答案 1 :(得分:12)

另一种方法,对于已经合并为默认值的分支也很有用:

hg diff -r "max(ancestors(foo) and branch(default)):foo"

虽然这可能是一个痛苦的坑,所以我建议通过添加以下内容来设置别名:

[alias]
branchdiff = diff -r "max(ancestors('$1') and branch(default)):'$1'"

您可以使用这样的Mercurial.INI / hgrc:

hg branchdiff <branch name>

hg branchdiff .

答案 2 :(得分:1)

如果只需要来自当前分支的日志:

hg log -b。

答案 3 :(得分:0)

分支之间的差异:

hg diff -r <branchname_1>:<branchname_2>

显示当前分支的最新提交:

hg log -r .