在mercurial中,如何只查看一组修订的标签而不是全部?

时间:2010-12-23 19:00:58

标签: mercurial mercurial-extension

hg tags始终显示所有标记,那么我怎样才能获得指向特定修订及其所有祖先的标记?

真实世界的用例是,如果我使用本地标签来指定变更集上的功能(或错误修复),我需要找出累积功能/错误直到特定转速。

一种解决方案是添加一个包装命令,将“-r”添加到tags。那么实现它的最佳方法是什么?使用revsets获取所有祖先转速并过滤标签?

2 个答案:

答案 0 :(得分:5)

这应该可以解决问题(需要mercurial 1.7):

hg log -r "ancestors(<rev>) and tag()"

其中<rev>是散列或本地修订号。但是,标记每个错误修正和功能似乎有点矫枉过正。

您可以按照约定,在提交消息中放置“bugfix:xyz”或“feature:abc”,而不是标记。然后,您可以提取所有错误修正和功能,如下所示:

hg log -r "ancestors(<rev>) and (keyword(bugfix) or keyword(feature))"

为重要里程碑或其他具有某些特殊意义的修订保留标记。

答案 1 :(得分:3)

如果我理解正确,你想:

  • 指定修订
  • 仅将日志过滤到该变更集及其所有祖先
  • 提取这些更改集中的所有标记

如果您可以将自己限制为标记名称,则可以这样做:

hg log -r "ancestors(HASH)" --template "{tags}"