假设我有一个名为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中做同样的事情?
答案 0 :(得分:33)
您可以使用revsets。
在您的具体示例中,我认为您可以使用以下内容获取d
和e
的列表:
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 .