【发布时间】:2023-01-28 06:45:54
【问题描述】:
动机
在我们的软件开发中,经常会出现多个开发人员同时对CHANGELOG.md进行修改的情况。假设我们的主分支看起来像这样。
## Unreleased
change X
change Y
如果在一个分支上,我们创建一个新版本:
## Unreleased
## [1.0.0] - 2023-01-27
change X
change Y
而在另一个 change Z 上介绍:
## Unreleased
change X
change Y
change Z
如果更改分支在发布分支之后合并,自动合并很可能会像这样愉快地合并 CHANGELOG.md:
## Unreleased
## [1.0.0] - 2023-01-27
change X
change Y
change Z
Change Z 被置于发行版之下,即使它不是发行版的一部分!
正确的 CHANGELOG.md 看起来像这样:
## Unreleased
change Z
## [1.0.0] - 2023-01-27
change X
change Y
问题
我们没有对变更日志进行自动化测试,所以我想知道是否可以强制开发人员在进行并行更改(三向合并)时手动合并变更日志。
同时,我希望我们的工具 (VSCode) 将 CHANGELOG.md 文件视为一个文本文件。
理想情况下,团队中的任何人都不必在克隆后执行任何手动步骤。
我已经尝试过的
我添加了一个 .gitattributes 文件并使用了 diff 和 merge 属性。
CHANGELOG.md -merge diff
虽然使用 -merge 取消设置 merge 属性确实会强制合并,但尽管使用 diff 设置了 diff 属性,文件仍被视为二进制文件。我尝试了更多组合,但到目前为止我还没有找到两者的组合:
- 允许我以文本形式查看差异
- 强制手动解决三向合并(强制冲突)
【问题讨论】:
标签: git merge diff changelog gitattributes