Mercurial日志,包括最终修订版的祖先,但在开始修订版之前排除默认分支上的任何内容

时间:2015-11-03 18:47:04

标签: mercurial mercurial-revsets

我正在编写一个解析mercurial日志的脚本,并生成任何两个修订版之间所有更改的报告。为了处理分支,我相信我需要使用revsets来生成最终修订版的祖先,但是我想限制范围以排除任何作为起始修订版的祖先的修订版。

   10
  /
 / 
9
|\
| \
|  \
8   | 
|   7
| 6 |
|/  |   
5   4
|  / 
| /
|/
3 
|   
| 
|
2
|
|
|
1

在3处,从默认分支创建功能分支。

在5处,从默认分支创建发布分支(6)。

在9处,功能分支合并回默认值并创建新版本(10)。

我想要一个自5以来影响10 =>的所有更改的列表-4,5,7,8,9,10-

我遇到的困难是在通过功能分支到达3时限制祖先搜索。我不想要它,因为3已经是5的一部分。

我审核的其他讨论:

Close但没有帮助限制范围。

This one意味着你知道分支,但我需要动态地找到它们。

1 个答案:

答案 0 :(得分:1)

好的,如果您的业务任务“发布时的新内容”,则revset的最佳迭代次数为ancestors(LAST) - ancestors(PREVIOUS),即您的样本

hg log -r "ancestors(10) - ancestors(6)"

(注意输出中缺少r5,因为它是在6中)

也许revset在[revsetalias]中更有用,添加了别名以提高可读性,smth.like(未经测试!!!)

[revsetalias]
new($1,$2) = ancestors($1) - ancestors($2)

[alias]
cl = log -r "new($1,$2)" --style changelog