Merge TODO.md with git's union merge (closes #190) #192

Merged
clawbot merged 1 commits from issue-190-todo-union-merge into next 2026-10-04 17:58:42 +02:00
Collaborator

Every PR adds an entry at the top of Completed Steps in TODO.md, so each merge to next left the other open PRs conflicting there (#190).

A root .gitattributes, copied from sneak/prompts, marks TODO.md with merge=union: when two branches insert at the same place, git keeps the lines of both. The TODO.md Workflow gains one line: read the merged entries after every merge or rebase.

What the diff does not show:

  • Git never reports a TODO.md conflict; a real one keeps both versions.
  • Two new entries that share an identical line can end up one inside the other; a rebase can do this to an entry already on next.
  • A rebased entry lands below every entry that reached next after its branch was cut, not on top.

Checks, in a scratch clone, two branches cut from this PR head each adding a different entry at the top of Completed Steps:

  • git merge-tree --write-tree: no conflict, both entries kept.
  • git merge: no conflict, both entries kept.

Disclosures:

  • Judgement call: .gitattributes is git config like .gitignore, which REPO_POLICIES.md allows in the root, and only a root one covers TODO.md; REPO_POLICIES.md is unchanged.
  • Not known: whether Gitea's own conflict check applies the attribute. Git 2.53 applied it in a bare repository only when the branches' common ancestor had .gitattributes, so PRs opened before this lands may show as conflicting until rebased once; that rebase needs no hand edits in TODO.md.
  • README.md does not describe this workflow, so it is unchanged.

Model: opus-5-5

Every PR adds an entry at the top of Completed Steps in `TODO.md`, so each merge to `next` left the other open PRs conflicting there (https://git.eeqj.de/sneak/pixa/issues/190). A root `.gitattributes`, copied from `sneak/prompts`, marks `TODO.md` with `merge=union`: when two branches insert at the same place, git keeps the lines of both. The `TODO.md` Workflow gains one line: read the merged entries after every merge or rebase. What the diff does not show: - Git never reports a `TODO.md` conflict; a real one keeps both versions. - Two new entries that share an identical line can end up one inside the other; a rebase can do this to an entry already on `next`. - A rebased entry lands below every entry that reached `next` after its branch was cut, not on top. Checks, in a scratch clone, two branches cut from this PR head each adding a different entry at the top of Completed Steps: - `git merge-tree --write-tree`: no conflict, both entries kept. - `git merge`: no conflict, both entries kept. Disclosures: - Judgement call: `.gitattributes` is git config like `.gitignore`, which `REPO_POLICIES.md` allows in the root, and only a root one covers `TODO.md`; `REPO_POLICIES.md` is unchanged. - Not known: whether Gitea's own conflict check applies the attribute. Git 2.53 applied it in a bare repository only when the branches' common ancestor had `.gitattributes`, so PRs opened before this lands may show as conflicting until rebased once; that rebase needs no hand edits in `TODO.md`. - `README.md` does not describe this workflow, so it is unchanged. Model: opus-5-5
clawbot added the needs-review label 2026-10-04 17:32:01 +02:00
clawbot self-assigned this 2026-10-04 17:32:01 +02:00
clawbot added 1 commit 2026-10-04 17:32:01 +02:00
Every PR adds an entry at the top of Completed Steps in TODO.md, so each
merge to next left the other open PRs conflicting there. A root
.gitattributes, copied from sneak/prompts, marks TODO.md merge=union: two
branches that each add an entry at the same place merge without a conflict
and keep both. Git then never reports a conflict in TODO.md, so the
Workflow now says to read the merged entries after every merge or rebase.

Model: opus-5-5
Author
Collaborator

PASS 98652d3cec6e9b53ad2a6e491dcbde56b31a5cf3, rebased onto next at 04093f53ad86efe672952ffe9423657a5eed7bff.

Deviation: compared .gitattributes with the copy on sneak/prompts next, since main there has none yet.

Model: opus-5-5

**PASS** `98652d3cec6e9b53ad2a6e491dcbde56b31a5cf3`, rebased onto `next` at `04093f53ad86efe672952ffe9423657a5eed7bff`. Deviation: compared `.gitattributes` with the copy on `sneak/prompts` `next`, since `main` there has none yet. Model: opus-5-5
clawbot merged commit f8c437b83f into next 2026-10-04 17:58:42 +02:00
clawbot deleted branch issue-190-todo-union-merge 2026-10-04 17:58:43 +02:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/pixa#192