From 439362ae049ada773990365b44ef8addb7802b18 Mon Sep 17 00:00:00 2001 From: Kamil Kozik Date: Mon, 24 Aug 2026 18:57:58 +0200 Subject: [PATCH] chore: union-merge CHANGELOG.md to stop parallel PRs conflicting Every change adds a bullet to the same "Unreleased / Fixed" list, so any two open PRs conflict on CHANGELOG.md even when they touch nothing else in common. Across the five currently open fix PRs that accounted for four of the seven conflict resolutions needed to land them. The built-in union driver keeps both sides. Verified against the open PRs: merging #313 onto main with this in place drops its conflicts from {CHANGELOG.md, test_api.py} to {test_api.py}. Scope: git honours this for local merges and rebases. GitHub's web UI does not read .gitattributes merge drivers, so the merge button and the conflict banner are unchanged; the benefit is when resolving locally, which is how these PRs are being updated. Noted in the file so the next reader does not expect otherwise. Trade-off: if two branches genuinely edit the same CHANGELOG line, union keeps both versions instead of flagging it. For an append-only list that is a good trade. Co-Authored-By: Claude Opus 5 (1M context) --- .gitattributes | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..b3a56641 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,9 @@ +# Every change adds a bullet to the same "Unreleased / Fixed" list, so parallel +# PRs conflict on CHANGELOG.md even though they never touch the same entry. +# The built-in union driver keeps both sides instead. +# +# This applies to merges and rebases performed with git. GitHub's web UI does +# not honour .gitattributes merge drivers, so the merge button and the +# "this branch has conflicts" banner are unaffected -- resolve locally to get +# the benefit. +CHANGELOG.md merge=union