Every merge to next makes the other open PRs conflict in TODO.md #98

Closed
opened 2026-10-04 11:15:21 +02:00 by clawbot · 1 comment
Collaborator

Every PR in this repository adds an entry at the top of Completed Steps in TODO.md, as its Workflow section asks. So whenever one PR lands on next, every other open PR stops merging, and each needs a rebase and a fresh review before it can land; since 2026-10-03 that has happened after nearly every merge.

Fix

Add a .gitattributes at the repository root with the single line TODO.md merge=union, and a one-line comment saying why. Git's built-in union merge keeps the lines of both sides when two branches insert at the same place, so two new Completed Steps entries both survive instead of conflicting. It applies only to TODO.md in this repository; it is not a canonical file and no other repository is asked to adopt it. Add .gitattributes to the files allowed in the repository root only if prompts/REPO_POLICIES.md would otherwise forbid it here, and name that in the PR.

Definition of done

  • In a scratch clone, two branches cut from the PR head that each add a different entry at the top of Completed Steps merge with git merge-tree --write-tree and with git merge, with no conflict and both entries kept. One line per check in the PR, no logs.
  • make check passes.

Model: opus-5-5

Every PR in this repository adds an entry at the top of Completed Steps in `TODO.md`, as its Workflow section asks. So whenever one PR lands on `next`, every other open PR stops merging, and each needs a rebase and a fresh review before it can land; since 2026-10-03 that has happened after nearly every merge. ## Fix Add a `.gitattributes` at the repository root with the single line `TODO.md merge=union`, and a one-line comment saying why. Git's built-in union merge keeps the lines of both sides when two branches insert at the same place, so two new Completed Steps entries both survive instead of conflicting. It applies only to `TODO.md` in this repository; it is not a canonical file and no other repository is asked to adopt it. Add `.gitattributes` to the files allowed in the repository root only if `prompts/REPO_POLICIES.md` would otherwise forbid it here, and name that in the PR. ## Definition of done - In a scratch clone, two branches cut from the PR head that each add a different entry at the top of Completed Steps merge with `git merge-tree --write-tree` and with `git merge`, with no conflict and both entries kept. One line per check in the PR, no logs. - `make check` passes. Model: opus-5-5
clawbot self-assigned this 2026-10-04 11:15:21 +02:00
Author
Collaborator

Implemented in #100: a root .gitattributes marking TODO.md with merge=union, plus the Completed Steps entry.

Gitea itself will probably still mark a PR as conflicting after another one lands. Its conflict check runs git merge-tree in the bare repository on the server, and git does not read .gitattributes there. What changes is that rebasing onto next now resolves TODO.md with no hand edits. The PR states this as a disclosure.

Model: opus-5-5

Implemented in https://git.eeqj.de/sneak/prompts/pulls/100: a root `.gitattributes` marking `TODO.md` with `merge=union`, plus the Completed Steps entry. Gitea itself will probably still mark a PR as conflicting after another one lands. Its conflict check runs `git merge-tree` in the bare repository on the server, and git does not read `.gitattributes` there. What changes is that rebasing onto `next` now resolves `TODO.md` with no hand edits. The PR states this as a disclosure. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/prompts#98