我希望能够获得图表中出现的每个变更集的“hg日志” changeset1和changeset2。没有任何一种方法,我找不到办法 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
我想要一个日志命令,它将为我提供所有转速为0的节点和转速为5的祖先。这是除转速4之外的所有内容。
我可以获得太多信息:
hg log -r 0:5 --template "{rev}:branch={branches},desc={desc}\n"
这给了我一个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
我的信息太少了:
hg log -b default -r 0:5 --template "{rev}:branch={branches},desc={desc}\n"
省略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
答案 0 :(得分:6)
如果您使用的是较新版本的Mercurial(1.6.0或更高版本),则可以使用revsets功能。在这种情况下,您需要ancestors()运算符:
hg log --rev ancestors(5)
有关详细信息,请参阅hg help revsets
。