A per-path union merge: changelog-style files keep both sides of an adjacent insertion issue #145 closed: completed andymccall opened this · 2 comments
andymccall set labels feature ·
Decided (Andy, 2026-10-26): auto-resolution, not a state-level rule. merge=union in .oxyattributes leaves 'conflicted' meaning what it does; tools settle a union file's adjacent insertions themselves: a checkout or pull writes both sides with no markers (the next commit records the resolution), and OxygenHub, landing a proposal whose only conflicts are adjacent insertions in union files, adds the keep-both resolution as part of the land. Every resolution stays a visible, signed change.
referenced by 2 changes on 26 Oct 2026
Done: oxy 85b2a985 (checkout settles union files) and 0e0d814c (Repo::union_resolution); hub fa1f2f2d (a proposal whose only conflicts are union adjacent insertions lands with their resolution). Oxygen's own CHANGELOG.md is marked union. Not deployed or released yet.
andymccall closed ·
Part C of issue #121 (Andy, 2026-10-26: 'B now, then C'). An opt-in rule in
.oxyattributes(gitattributes syntax, spec §19),CHANGELOG.md merge=union, makes an adjacent insertion in a matching file no conflict at all: the state orders its sides earliest change first, asoxy resolve --bothwould, so two proposals each adding an Unreleased line no longer conflict on landing. The rule is read from the state's own.oxyattributes, so every peer and the hub agree. Edit/edit conflicts in such files still conflict. Nothing changes for files without the rule.