如何查看两个分支之间的提交消息列表

时间:2014-11-11 08:18:02

标签: version-control mercurial dvcs

有一个存储库位于:

http://hg.tryton.org/trytond

如何在分支2.8和3.0之间查看更改列表(作为提交和消息)?

我试过

$ hg log -r "2.8:3.0" --template '{node|short} {desc|strip|firstline}\n' 
e1e5cf5700d0 Increase version number
faa26bc2e908 Added tag 2.8.12 for changeset a81a53304344
a81a53304344 Prepare release 2.8.12
b57e24462eb1 Increase version number

但它并未列出2.8和3.0之间所做的所有更改

2 个答案:

答案 0 :(得分:0)

hg log -r "(ancestors(2.8) or ancestors(3.0)) and not (ancestors(2.8) and ancestors(3.0))"

答案 1 :(得分:0)

分支机构之间的变更日志?! 如何你会想象这个?分支是独立的(可变的)树,在过去有(可能的)共同祖先

按照预期生成“:”范围的Revset

  

修订号介于x和y之间的所有变更集,包括在内。

hg glog -r "2.8:3.0" -T "{branch} {rev} {tags}\n{node|short} {desc|strip|firstline}\n\n"
o  2.8 4801
|  e1e5cf5700d0 Increase version number
|
o  2.8 4800
|  faa26bc2e908 Added tag 2.8.12 for changeset a81a53304344
|
o  2.8 4799 2.8.12
|  a81a53304344 Prepare release 2.8.12
|
| o  3.0 4798
| |  b57e24462eb1 Increase version number
| |

当您使用branch-name作为revision-id时,分支的提示用作节点,之前任何提交到受revset分支影响的任何提交中,您将只获得此结果

虽然我在查询中找不到任何合理的后端,但我不得不问“哪个是真正的业务任务?

添加-上

使用硬编码的revset记录“分支2.8和3.0中最后两个标签之间的修订”

hg log -r "last(tag('re:^2.8')):last(tag('re:^3.0'))"

和revset可以很容易地转换为参数化[revsetalias]之类的

cbt($1, $2) = last(tag('re:^$1')):last(tag('re:^$2'))

并且日志可以缩短为

hg log -r "cbt(2.8, 3.0)"

2.8 4799 2.8.12
a81a53304344 Prepare release 2.8.12

3.0 4798
b57e24462eb1 Increase version number

3.0 4797
a1dc5578784d Added tag 3.0.8 for changeset ff943130c7c4

3.0 4796 3.0.8
ff943130c7c4 Prepare release 3.0.8

并用于任何一对分支