MR-Tracker
项目地址: https://github.com/MamaShip/MR-Tracker
大家都知道基于 git commit 信息生成 ChangeLog 的工具,我之前也用过 git-chglog 等。
后来发现小团队内统一 commit 规范实在是费力不讨好……尤其有些提交很零碎,commit 信息作为 changelog 太琐碎,强制大家整理成完整提交再合入又显得不敏捷。
实际上,在 Github 上,自带的 Generate release note 功能就是基于 Pull Request 来分析的——它只记录真正合入主干的那笔改动,不会把粒度放到 commit 那么细。
所以我就自己写了个 Gitlab 上基于 Merge Request 生成 ChangeLog 的小工具。通过 gitlab API 获取 MR 信息,把版本(tag)间的改动创建成 changelog 。
效果大概是这样的:
这个工具在我们团队内已经使用了几个月,功能比较简单,用起来也比较稳定,就放出来给有类似需求的朋友用用,也可以帮忙找 bug 提 issue ~
主要特点
类似的小工具已经很多了,例如 walle。之所以要重复造轮子,是因为看重以下特性,且会往这些方向继续迭代:
- 生成 changelog 的范围是更自由可控的。发布 1.9 版时我只关心 1.8-1.9 之间的改动,那就不要给我全部生成。如果只关注某个 branch ,就只输出合入到这个 branch 的 MR 。
- 保留手动调整的空间。现有工具大多是直接生成到固定的文件,并且把历史记录全都重新生成一遍,你之前调整过的内容直接给覆盖了。而我们希望它输出到 gitlab issue 之类的地方(非代码库内),团队成员发现有可读性差的表述可以再做编辑。结合前一点,可以让它不覆盖之前的版本记录。
- 宽松的格式要求。大多数工具要求遵守 AngularJS Commit Conventions,而这套命名规则在我们实践中并不好用,所以我们要减少规范限制而更多依赖手动调整↑。
使用方式
Release 页面 直接下载可执行文件即可。或者有 go 开发环境的用户:
go install github.com/MamaShip/MR-Tracker@latest
命令行示例:
MR-Tracker -project 278964 -start v14.10.0-ee -end v14.10.1-ee -output changes.md
你要是提供了 gitlab 仓库对应权限的 token ,就可以加-post
参数让它把输出创建成 issue:
MR-Tracker -site YOUR_GITLAB_URL -project PROJECT_ID -token XXXXXXXXXXX -start v1.9.9 -post
更新计划
目前还不是 stable 版本,大家帮忙捉捉虫!
之前写了基础功能,忙起来就搁置了,现在准备捡起来加一些特性
原生的 CI 集成支持,例如打包成一个 docker 镜像,允许仓库在打 tag 时自动触发 pipeline 来创建 changelog issue√Done- 支持在仓库内保存用户的配置,下次在仓库内运行命令就直接读配置,无需再输命令行参数
CommandNotFound ⚡️ 坑否
好强,下载试用一下~