2010-12-20 77 views
5

我希望能够获得 changeset1和changeset2之间的图表中出现的每个变更集的“hg日志”。我无法找到一个方法来做到这一点没有任何 一)漏掉了一个名为分支是changeset1之间合并的节点:或b)包括一个名为分支机构未changeset2合并命名分支上的变更日志的mercurial日志,但不是未合并的

这里的祖先节点changset2 是一个“汞出入记录”一个简单的例子有两个命名分支加上默认分支。一位叫分支被合并,所以它的节点是相关的,另一种是不相关的:

@ 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 

我想日志命令会给我所有的都转0的后代和转5的祖先这是节点除了转一切4.

我能得到太多信息:

hg log -r 0:5 --template "{rev}:branch={branches},desc={desc}\n" 

这让我对第4版日志条目,这是不转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 

我能得到太少的信息:如果您使用水银的较新版本

hg log -b default -r 0:5 --template "{rev}:branch={branches},desc={desc}\n" 

遗漏修订版3中,这是第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 

回答

6

的REV 0的后代和祖先(1.6.0或更高),则可以使用revsets功能。在这种情况下,你需要的祖先()操作:

hg log --rev ancestors(5) 

更多信息请参见hg help revsets

+0

谢谢。我以前从未见过。我真正想要的是:hg log --rev'ancestors(changeset2)和decendants(changeset1)' – 2010-12-20 22:36:39

+3

实际上,它看起来像双冒号会做我想要的更简单:hg log --rev'changeset1 :: changeset2' – 2010-12-20 22:40:54

+3

是的,你想要'X :: Y'语法 - 我把它放在这个目的:-) – 2010-12-30 10:11:56