在多人協(xié)作的項目中,管理changelog常常會遇到合并沖突的問題,尤其是當多個pr同時修改同一個文件時。最近在處理一個大型項目時,我發(fā)現(xiàn)每次合并changelog文件時都會遇到?jīng)_突,導致開發(fā)效率大大降低。經(jīng)過一番探索,我找到了automattic/jetpack-changelogger這個工具,它通過使用”change files”的方式完美解決了我的問題。
為什么選擇automattic/jetpack-changelogger?
傳統(tǒng)的Changelog文件在多人同時進行開發(fā)時容易產(chǎn)生合并沖突。每次合并時,一個PR的變更可能會覆蓋另一個PR的變更,導致需要不斷地重新調(diào)整和提交。automattic/jetpack-changelogger通過讓每個PR在changelog目錄下創(chuàng)建一個獨立的”change file”,避免了這種沖突。因為文件創(chuàng)建不會產(chǎn)生沖突,除非兩個PR選擇了相同的文件名。
此外,”change files”還可以包含額外的元數(shù)據(jù),比如語義版本控制的”significance”,這使得發(fā)布管理者可以直接從這些文件中獲取版本更新的信息,而無需手動判斷是進行patch、minor還是major版本更新。
安裝
使用Composer安裝automattic/jetpack-changelogger非常簡單:
composer require --dev automattic/jetpack-changelogger
安裝后,changelogger工具將被放置在vendor/bin/目錄下。你可以將其添加到PATH中,或者通過composer exec — changelogger來運行。
如果你使用的是git,建議在倉庫中創(chuàng)建changelog/.gitkeep文件,以確保該目錄始終存在。
配置
Changelogger的配置可以通過composer.json文件中的extra.changelogger進行設(shè)置。常見的配置選項包括:
- changelog:指定Changelog文件的路徑,默認是CHANGELOG.md。
- changes-dir:指定存放”change files”的目錄,默認是changelog。
- link-template:用于創(chuàng)建Changelog條目鏈接的模板。
- ordering:指定變更條目的排序方式,默認是[‘subheading’, ‘content’]。
- types:指定變更類型,用于在Changelog中分類條目。
- formater:用于解析和格式化Changelog的插件,默認是keepachangelog。
- versioning:用于確定新版本的版本控制插件,默認是semver。
使用
添加變更文件
變更文件包含幾個字段和一個空行后的變更條目內(nèi)容。例如:
Significance: major Type: added Comment: This is an example. Initial commit!
你可以使用changelogger add命令交互式地創(chuàng)建變更文件,或者通過命令行選項非交互式地指定所有字段。
驗證變更文件
使用changelogger validate命令可以驗證變更文件的有效性。默認情況下,它會檢查changes-dir目錄下的所有非點文件。
檢查版本
通過changelogger version命令可以獲取當前、之前和下一個版本的信息。
更新Changelog
使用changelogger write命令可以將變更文件合并到新的Changelog條目中。請注意,此操作會刪除變更文件,因此建議在執(zhí)行前將其提交到git。
插件
Changelogger支持插件來解析Changelog文件和確定版本更新。默認包含的插件有:
- keepachangelog:解析符合keepachangelog.com格式的Changelog文件。
- semver:根據(jù)語義版本控制規(guī)則確定下一個版本。
- wordpress:適用于WordPress和類似插件的版本控制規(guī)則。
總結(jié)
使用automattic/jetpack-changelogger大大簡化了Changelog的管理,避免了合并沖突,提高了開發(fā)效率。通過將變更信息分散到獨立的文件中,不僅解決了合并沖突的問題,還提供了更靈活的版本控制方式。如果你在多人協(xié)作的項目中遇到Changelog管理難題,不妨試試這個工具。