我正在尝试生成项目的变更日志(bitbucket.org 中的存储库),但我找不到简单的解决方案。我们正在使用这个模式
(<type>(<scope>): <subject>)
填写提交消息,并标记版本(0.1、0.2、0.3)。
有什么开箱即用的东西(一些脚本、npm 包等)或者我能做的最好的事情就是使用 git log 编写一些自定义脚本并解析数据(提交消息等) )?
我知道有一个 github-changelog-creator,但只要这个存储库位于 bitbucket 存储库中,我就无法使用。
我们使用这个简单的 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
您可以将其作为一些 shell 文件放在项目根目录中并运行它(根据您的平台,您可能需要使其可执行),如下所示
sh change-log-builder.sh > changelog.md
生成的changelog.md看起来像这样
我使用 npm 包标准版本,它创建具有语义版本控制的标签,并根据提交类型自动构建变更日志。
npm -i standard-version --save-dev
然后在package.json添加脚本:
{
...
"release": "standard-version && git push master $(git describe --tags --abbrev=0)"
}
运行
npm run release
,当需要创建新的release时,标记它,并将标记推送到远程,以便管道启动。