在构建中使用 Mercurial 生成最新版本之间的更改日志

Use Mercurial in build to generate a change log between the last releases

目前我正在尝试弄清楚如何自动生成更新日志。计划是使用默认分支并将带有标签的提交标记为“已交付给客户”标签应该有版本号。

所以我添加了 3 个标签(Version0、Version1、Version2)来分支“默认”。现在我想为

生成一个 hg 日志

"Current Tag" of branch=default to "Current Tag -1"

但是..我想不出正确的语法。

我试过类似的东西:

hg log --branch=default --rev="tag()" --template=Changelog => no Error but no result
hg log --branch=default --rev="tag(Version0):tag(Version1)" --template=Changelog => Errors Version0 does not exist.

谁能give/or 指出我正确的语法。我更喜欢不需要知道标签名称的解决方案。

类似于:记录 branch=default where from last to last -1 where Tag exists.

可选:我发现“标签部分”也没有 --rev 像“标签()::标签()”一样使用,但我无法弄清楚我必须查看 hg 文档(函数名称)的哪一部分...

我将在 hg-git 存储库的本地克隆上展示整个过程,其中包含许多标记作为版本号,但您必须阅读hg help revisions 还是小心点吧。

  • 起点(几乎与您的命令相同)hg log -r "tag() & branch(default)" --style compact(为便于阅读截断输出)

    253[0.1.0] 505d7cdca198 2009-09-30 14:39 -0500 kbullock 带有 distutils 的软件包

    269[0.2.0] 77d6c9eb02fb 2009-12-26 12:42 -0600 durin42 设置:撞到 0.2.0

    278[0.2.1] 21ead8190d9c 2009-12-26 13:46 -0600 durin42 设置:撞到 0.2.1

    322[0.2.2] a222399a59d7 2010-05-22 22:12 -0500 durin42 凹凸版本 0.2.2

    348[0.2.3] 5d39b98e5083 2010-07-05 11:56 -0500 durin42 将版本升级到 0.2.3

    358[0.2.4] b53421918a89 2010-08-25 15:45 -0500 durin42 设置:bump 版本号

    ...

    1698[0.9.0] c17c6c915646 2020-08-06 16:31 +0200 乔治 设置版本为 0.9.0

    1814[0.10.0] d3af25aa2864 2021-01-11 15:58 +0100 丹尼尔 设置:将版本升级到 0.10.0

好的,我知道了

  1. 范围内没有修订的所有(仅)标记修订
  2. 最新修订在底部

现在我会解决注意到的问题

  • hg log -r "limit(reverse(tag() & branch(default)),2)" --style compact

    1814[0.10.0] d3af25aa2864 2021-01-11 15:58 +0100 丹尼尔 设置:将版本升级到 0.10.0

    1698[0.9.0] c17c6c915646 2020-08-06 16:31 +0200 乔治 设置版本为 0.9.0

不错,但是

  • 现在我必须参考 hg log 中的第一和第二修订版以获取范围 SECOND::FIRST 并使用 limit() 谓词两次并使用一些魔法

最后一个版本(列表中第一个变更集)hg log -r "limit(reverse(tag() & branch(default)),1)" --style compact

1814[0.10.0]   d3af25aa2864   2021-01-11 15:58 +0100   danchr
  setup: bump version to 0.10.0

上一版本(列表中的第二个变更集 - 列表中偏移量为 1 的一个变更集)hg log -r "limit(reverse(tag() & branch(default)),1,1)" --style compact

1698[0.9.0]   c17c6c915646   2020-08-06 16:31 +0200   georges
  Setting version for 0.9.0
  • 范围的 Revset,第一次迭代 hg log -r "limit(reverse(tag() & branch(default)),1,1)::limit(reverse(tag() & branch(default)),1)" --style compact

    1698[0.9.0] c17c6c915646 2020-08-06 16:31 +0200 乔治 设置版本为 0.9.0

    1699 940082ab0f8a 2020-08-06 17:08 +0200 乔治 为变更集 c17c6c915646

    添加了标签 0.9.0

    1700 746310cba0a3 2020-08-06 17:10 +0200 乔治 为变更集 c17c6c915646

    添加了签名

    1701 8b51b82cfb48 2020-08-06 14:53 +0200 测试:当 gitnode() 在模板

    中时,演示非空 hg 传入的崩溃

    ...

    1813 635107c4ad3a 2021-02-01 18:12 +0100 丹尼尔 设置:将主页调整为七爪怪

    1814[0.10.0] d3af25aa2864 2021-01-11 15:58 +0100 丹尼尔 设置:将版本升级到 0.10.0

  • Revset 很好,但字符串太长且不防打字,用 revsetalias 润色它,然后添加到 .hgrc 以回购到现有或现在创建[revsetalias] 类似

    的部分

    rcl = limit(reverse(tag() & branch(default)),1,1::limit(reverse(tag() & branch(default)),1)

命令hg log -r "rcl" --style compact会产生与以前的长版本相同的结果,但它至少更紧凑和令人难忘

HTH

一些注意事项:

  1. 您可以|必须使用任何其他样式而不是用于测试 compact
  2. 您可以将完整的 hg log ... 命令转换为新的 hg-alias 并将其用作 (f.e) hg rcl