合并的命名分支上的变更的mercurial日志,但不是未合并的

Mar*_*ing 5 mercurial logging branch

我希望能够得到变更集1和变更集2之间的图表中出现的每个变更集的"hg日志".如果没有a)省略在changeset1:changset2之间合并的命名分支上的节点,或者b)包括不是changeset2的祖先的命名分支上的节点,我找不到这样做的方法

这是一个简单示例的"hg glog",其中包含2个命名分支和默认分支.一个命名分支被合并,因此它的节点是相关的,另一个是不相关的:

@    changeset:   5:e384fe418e9b
|\   tag:         tip
| |  parent:      2:7dc7af503071
| |  parent:      3:0a9be59d576e
| |  summary:     merge somefeature branch into default
| |
| | o  changeset:   4:4e8c9ca127c9
| | |  branch:      unmerged_feature
| | |  parent:      1:ef98ad136fa8
| | |  summary:     change that is not merged into ending changeset
| | |
| o |  changeset:   3:0a9be59d576e
| |/   branch:      somefeature
| |    parent:      1:ef98ad136fa8
| |    summary:     changed b.txt
| |
o |  changeset:   2:7dc7af503071
|    summary:     changed a.txt
|
o  changeset:   1:ef98ad136fa8
|  summary:     added b.txt
|
o  changeset:   0:271b22b4ad30
   summary:     added a.txt
Run Code Online (Sandbox Code Playgroud)

我想要一个日志命令,它将为我提供所有转速为0的节点和转速为5的祖先.这是除转速4之外的所有内容.

我可以获得太多信息:

hg log -r 0:5 --template "{rev}:branch={branches},desc={desc}\n"
Run Code Online (Sandbox Code Playgroud)

这给了我一个rev 4的日志条目,它不是rev​​ 5的祖先:

0:branch=,desc=added a.txt
1:branch=,desc=added b.txt
2:branch=,desc=changed a.txt
3:branch=somefeature,desc=changed b.txt
4:branch=unmerged_feature,desc=change that is not merged into ending changeset
5:branch=,desc=merge somefeature branch into default
Run Code Online (Sandbox Code Playgroud)

我的信息太少了:

hg log -b default -r 0:5 --template "{rev}:branch={branches},desc={desc}\n"
Run Code Online (Sandbox Code Playgroud)

省略rev 3,它是rev 0的后代和rev 5的祖先

0:branch=,desc=added a.txt
1:branch=,desc=added b.txt
2:branch=,desc=changed a.txt
5:branch=,desc=merge somefeature branch into default
Run Code Online (Sandbox Code Playgroud)

Nia*_* C. 6

如果您使用的是较新版本的Mercurial(1.6.0或更高版本),则可以使用revsets功能.在这种情况下,您需要ancestors()运算符:

hg log --rev ancestors(5)
Run Code Online (Sandbox Code Playgroud)

有关hg help revsets更多信息,请参阅

  • 实际上,看起来双冒号会做我想要的更简单:hg log --rev'changeset1 :: changeset2' (3认同)
  • 是的,你想要`X :: Y`语法 - 我把它放在这个目的:-) (3认同)