【问题标题】:In mercurial, how to see tags for only a set of revisions instead of all?在 mercurial 中,如何仅查看一组修订而不是全部的标签?
【发布时间】:2010-12-23 19:00:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: mercurial mercurial-extension


    【解决方案1】:

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

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

    其中&lt;rev&gt; 是哈希或本地修订号。但是,标记每个错误修复和功能似乎有点过头了。

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

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

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

    【讨论】:

    • 非常酷。我们确实考虑过使用提交消息,但随后我们需要使用预提交挂钩来强制执行它(我们要求每次推送都有一个错误编号),这似乎有点令人窒息,并且对于处理多个错误/功能的多个 chagnesets 来说很棘手.我们将在集成存储库中使用 local 标签,并确实为发布版本保留全局标签。
    • 顺便说一句,我需要查看实际标签,而不仅仅是修订,所以请添加--template '{tags}'(来自 LVK 的答案)以获得更完美的答案。
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多