从提交和标签生成变更日志

8

我正在尝试为一个项目(在bitbucket.org上的代码库)生成变更日志,但我找不到简单的解决方案。我们正在使用这个模式

(<type>(<scope>): <subject>)

为了完善提交信息和版本标签(0.1、0.2、0.3等),有没有一些开箱即用的工具(比如脚本、npm包等)?或者说最好的方法就是使用git log并解析数据(比如提交信息等),编写定制脚本?

我知道有一个github-changelog-creator,但只要这个仓库在bitbucket上,我就不能使用它。


2
我坚信changelogs应该手动创建。提交历史记录非常细粒度,并存在于技术层面上。changelogs应该更少地关注细节,侧重于用户界面的变化。 - Chris
1个回答

30
我们正在使用这个简单的 shell 脚本来生成按标签排序的分层变更日志,最新的标签在顶部。
#!/usr/bin/env bash
previous_tag=0
for current_tag in $(git tag --sort=-creatordate)
do

if [ "$previous_tag" != 0 ];then
    tag_date=$(git log -1 --pretty=format:'%ad' --date=short ${previous_tag})
    printf "## ${previous_tag} (${tag_date})\n\n"
    git log ${current_tag}...${previous_tag} --pretty=format:'*  %s [View](https://bitbucket.org/projects/test/repos/my-project/commits/%H)' --reverse | grep -v Merge
    printf "\n\n"
fi
previous_tag=${current_tag}
done

你可以将它作为一些 shel 文件放在项目根目录中并运行它(根据你的平台,你可能需要将其设置为可执行文件),如下所示

sh change-log-builder.sh > changelog.md

生成的changelog.md看起来像这样


v1.1.0 (2017-08-29)

  • 增加了IPv6支持[查看]
  • 添加了TreeMaker类及其测试。 [查看]

v1.0.9 (2017-08-22)

  • 更新composer.json.lock [查看]

v1.0.8 (2017-08-22)

  • 添加S3Gateway作为替代类 [查看]
  • 删除不再使用的文件 [查看]

谢谢您。我正在使用这个(稍作修改)来管理我们的 alpha 和 beta 渠道。 - FreeBird

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接