如何在Mercurial中确定,是否已经嫁接了修订版指定的变更集?

时间:2012-04-24 17:41:34

标签: mercurial

如果更改集已在branchX和default之间嫁接,我怎么看? 我知道,hg嫁接检查这个给我,在那里我不能移植两次,但我想列出所有更改集,这些更改集未在branchX和default之间嫁接。 提前感谢您的回答。

2 个答案:

答案 0 :(得分:7)

此信息存储在嫁接变更集内的所谓“额外”字典中。这是一个简单的键值映射,您可以使用hg log --debug查看。

遗憾的是,这些信息尚未作为revset谓词公开,因此您必须采用传统的方式:从

开始
$ hg --debug log -b branchX

获取branchX上的更改集。然后grep或以其他方式搜索匹配

的行
extra:       source=[0-9a-f]{40}

如果您想要更高级别的访问权限,可以使用Mercurial bindings。目前有Java,Python和Scala库。

答案 1 :(得分:7)

如果你有Mercurial 2.3或更新版本,你可以使用revset来执行此操作:

$ hg log -r "destination()"

获取作为移植目的地的所有变更集的列表。你也可以这样做:

$ hg log -r "origin()"

获取所有移植来源的变更集的列表。这些revset都将另一个revset作为参数,因此您可以使用可组合revset的全部功能深入搜索。