2

我们的 TeamCity 构建了一个完整的安装程序包,其中包括多个 Web 应用程序、控制台应用程序和 win 表单应用程序。它构成了一个应用程序套件。这些应用程序中的每一个都有自己的 Mercurial 存储库。

我们希望能够自动为每个版本提供发行说明。当将鼠标悬停在构建更改上时,TeamCity 已经在 Web 界面中显示 Mercurial 提交消息。是否有可能在构建期间以某种方式捕获这些消息并将它们提取到代理工作文件夹中的文本文件中?

4

1 回答 1

2

我不知道 TeamCity,但我有一个简单的方法来获取一些软件的提交并将其格式化为一个整洁的历史日志,我想这就是你所追求的。也许您可以接受并修改它以满足您的需要 - 它仅使用 mercurial 命令,因此您可以将其添加为构建的依赖项(我的 VC++ 项目有一个构建后步骤,它运行命令并输出到文本文件)。

我有一个像这样的简单模板:

$ cat history.template
changeset = '{tags} {rev}\t{desc|fill68|strip|tabindent}\n'
start_tags = '\n'
tag = '{tag},'
last_tag = '{tag} : {node|short} @ {date|shortdate}\n'

当我使用以下hg命令创建可用的历史日志时:

hg log --style history.template -r "reverse(::.) & !desc('Added tag')"

该命令获取工作目录所有祖先的提交注释,输出标签和变更集哈希,以及标签的创建日期,然后是所有相关的更改。hg log -G这是一个测试 repo的示例输出,显示了defaultrelease分支:

@  21[tip]:18   c676cfe95284   2012-12-12 10:12 +0000   rob
|    Added tag 0.0.5 for changeset d0869f1c84ba
|
| o  20   7618cafcfc5d   2012-11-26 17:23 +0000   rob
| |    More changes indeed
| |
| o  19:17   ffc8bef85a2e   2012-11-26 17:22 +0000   rob
| |    Some additional files were needed
| |
o |  18[0.0.5]:15,17   d0869f1c84ba   2012-11-22 17:25 +0000   rob
|\|    Releasing
| |
| o  17   a41d817184ea   2012-11-22 17:25 +0000   rob
| |    Made the last change
| |
| o  16:13   e790e9022e70   2012-11-22 17:24 +0000   rob
| |    Made some changes using "record"
| |
o |  15   15f21a6f554a   2012-11-13 17:03 +0000   rob
| |    Added tag 0.0.4 for changeset c316b232c95c
| |
o |  14[0.0.4]:10,13   c316b232c95c   2012-11-13 17:03 +0000   rob
|\|    Merging, eh?
| |
| o  13   ba00c7045a23   2012-11-13 17:02 +0000   rob
| |    Modified revset selection for logging
...

显示的模板和命令输出以下内容:

0.0.5 : d0869f1c84ba @ 2012-11-22
 18     Releasing
 17     Made the last change
 16     Made some changes using "record"

0.0.4 : c316b232c95c @ 2012-11-13
 14     Merging, eh?
 13     Modified revset selection for logging
 12     When logging history select only ancestors of the working directory
 11     Added history logging
...

如果您想对命令行或模板进行一些解释,请添加注释。

于 2012-12-12T10:22:55.423 回答