4

hg tags总是显示所有标签,那么我怎样才能只获得指向特定修订版及其所有祖先的标签?

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

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

4

2 回答 2

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))"

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

于 2010-12-23T21:34:12.770 回答
3

如果我对您的理解正确,您希望:

  • 指定修订
  • 将日志过滤为仅该变更集 + 其所有祖先
  • 提取这些变更集中的所有标签

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

hg log -r "ancestors(HASH)" --template "{tags}"
于 2010-12-23T19:25:25.077 回答