在多人协作的项目中,管理changelog常常会遇到合并冲突的问题,尤其是当多个pr同时修改同一个文件时。最近在处理一个大型项目时,我发现每次合并changelog文件时都会遇到冲突,导致开发效率大大降低。经过一番探索,我找到了automattic/jetpack-changelogger这个工具,它通过使用”change files”的方式完美解决了我的问题。
为什么选择automattic/jetpack-changelogger?
传统的Changelog文件在多人同时进行开发时容易产生合并冲突。每次合并时,一个PR的变更可能会覆盖另一个PR的变更,导致需要不断地重新调整和提交。automattic/jetpack-changelogger通过让每个PR在changelog目录下创建一个独立的”change file”,避免了这种冲突。因为文件创建不会产生冲突,除非两个PR选择了相同的文件名。
此外,”change files”还可以包含额外的元数据,比如语义版本控制的”significance”,这使得发布管理者可以直接从这些文件中获取版本更新的信息,而无需手动判断是进行patch、minor还是major版本更新。
安装
使用Composer安装automattic/jetpack-changelogger非常简单:
composer require --dev automattic/jetpack-changelogger
安装后,changelogger工具将被放置在vendor/bin/目录下。你可以将其添加到PATH中,或者通过composer exec — changelogger来运行。
如果你使用的是git,建议在仓库中创建changelog/.gitkeep文件,以确保该目录始终存在。
配置
Changelogger的配置可以通过composer.json文件中的extra.changelogger进行设置。常见的配置选项包括:
- changelog:指定Changelog文件的路径,默认是CHANGELOG.md。
- changes-dir:指定存放”change files”的目录,默认是changelog。
- link-template:用于创建Changelog条目链接的模板。
- ordering:指定变更条目的排序方式,默认是[‘subheading’, ‘content’]。
- types:指定变更类型,用于在Changelog中分类条目。
- formater:用于解析和格式化Changelog的插件,默认是keepachangelog。
- versioning:用于确定新版本的版本控制插件,默认是semver。
使用
添加变更文件
变更文件包含几个字段和一个空行后的变更条目内容。例如:
Significance: major Type: added Comment: This is an example. Initial commit!
你可以使用changelogger add命令交互式地创建变更文件,或者通过命令行选项非交互式地指定所有字段。
验证变更文件
使用changelogger validate命令可以验证变更文件的有效性。默认情况下,它会检查changes-dir目录下的所有非点文件。
检查版本
通过changelogger version命令可以获取当前、之前和下一个版本的信息。
更新Changelog
使用changelogger write命令可以将变更文件合并到新的Changelog条目中。请注意,此操作会删除变更文件,因此建议在执行前将其提交到git。
插件
Changelogger支持插件来解析Changelog文件和确定版本更新。默认包含的插件有:
- keepachangelog:解析符合keepachangelog.com格式的Changelog文件。
- semver:根据语义版本控制规则确定下一个版本。
- wordpress:适用于WordPress和类似插件的版本控制规则。
总结
使用automattic/jetpack-changelogger大大简化了Changelog的管理,避免了合并冲突,提高了开发效率。通过将变更信息分散到独立的文件中,不仅解决了合并冲突的问题,还提供了更灵活的版本控制方式。如果你在多人协作的项目中遇到Changelog管理难题,不妨试试这个工具。