您如何找到Mercurial中两个标签之间的变更集?

时间:2018-12-13 04:34:09

标签: version-control mercurial changeset

如果我有两个分别名为2.0和2.1的标签,如何找到两者之间的变更集消息?我正在尝试找到一种使用HG make发布说明并列出与提交相关联的不同消息的方法。

变更集示例:

changeset: 263:5a4b3c2d1e user: User Name <user.name@gmail.com> date: Tue Nov 27 14:22:54 2018 -0500 summary: Added tag 2.0.1 for changeset 9876fghij

所需的输出:

Added tag 2.1 for changeset 67890pqrst Change Info... Added tag 2.0.1 for changeset 9876fghij Change Info... Added tag 2.0 for changeset klmno12345

2 个答案:

答案 0 :(得分:3)

序言

“任何挑战都有一个简单易懂的错误决定”。鲍里斯(Boris)的答案是此规则的最好例证:“ ::”仅在纯单分支开发的情况下,topo-range才会产生好的结果(通常,想法(tm)

面部

好的解决方案必须正确处理复杂的DAG,并回答以下问题:“新包含的新变更集,旧不存在(无论发生的性质如何)”

对我来说,这是带有两个参数的revset中的“ only()”函数

  

“ only(set,[set])”

     

不是第一组祖先的变更集   回购中的任何其他头。如果指定了第二组,则   结果是第一组的祖先,而不是   第二组(即:: set1-:: set2)。

hg log -r "only(2.1,2.0)"

也许可以通过预定义样式“ changelog”获得更好的演示效果

hg log -r "only(2.1,2.0)" -s changelog

或自定义样式|模板

答案 1 :(得分:2)

您将要使用修订集来选择两个标签之间的所有变更集,例如:2.0::2.1可能会成功。您可以通过运行hg log -G -r '2.0::2.1'来验证所选变更集。 (有关修订的详细信息,请参见hg help revset

一旦您选择了正确的变更集,现在就可以应用模板来仅检索所需的信息。例如,如果只需要变更集描述的第一行,则可以对整个描述进行hg log -r '2.0::2.1' -T '{desc}\n'或对每个变更集描述的第一行进行hg log -r '2.0::2.1' -T '{desc|firstline}\n'

如果您想添加更多信息,hg help template是您的朋友。