fix: 45 server-side merge commits on main carry the forge noreply identity, not jon@sixfold.space #436

Open
opened 2026-08-17 21:15:01 +00:00 by hexajon · 1 comment
Owner

Problem

45 commits on main have author AND committer set to a forge noreply address, not jon@sixfold.space:

  • 44 as hexajon@noreply.codeberg.org (Codeberg era, carried over in the migration).
  • 1 as hexajon@noreply.git.cheshirecube.cloud (a72431b7, recent).

All 45 are server-side merge commits: PR merges, or "Merge branch 'main' into " branch updates. The other ~3015 commits are correct.

Root cause

The forge writes a server-side merge commit as the authenticated account. It represents that account with the account noreply email. A local merge would use the git identity (jon@sixfold.space), so the noreply email is the sign that the forge minted the commit. The trigger was the branch-UPDATE step: default_update_style was merge, so updating a PR branch with main minted a merge commit, and the fast-forward merge then carried it onto main.

Prevention (done)

I set default_update_style to rebase. default_merge_style is already fast-forward-only. Now no forge path mints a commit: the merge fast-forwards, and a branch update rebases. No new noreply commit can appear.

Open decision

What to do about the 45 existing commits. Re-authoring them rewrites merged history and forces a push to main, the same manual by-hand step as #422. The 44 Codeberg-era commits sit deep in history, so re-authoring them rewrites almost the whole tree and every downstream hash (the GitHub source mirror too, #386). Options:

  • Re-author only the 1 recent cheshirecube commit; accept the 44 legacy ones as migration history.
  • Re-author all 45 (deep rewrite).
  • Accept all 45 as history and rely on the prevention going forward.

I need to settle this before any rewrite.

  • #422 - re-sign the unsigned commits on main (the same manual force-push rewrite; the recent range could ride together).
  • #425 item 3 - finish must not leave a mis-authored or unsigned merge commit (tool behavior).
  • #432 - the fast-forward-only merge flag (the merge-side prevention).
## Problem 45 commits on `main` have author AND committer set to a forge noreply address, not `jon@sixfold.space`: - 44 as `hexajon@noreply.codeberg.org` (Codeberg era, carried over in the migration). - 1 as `hexajon@noreply.git.cheshirecube.cloud` (`a72431b7`, recent). All 45 are server-side merge commits: PR merges, or "Merge branch 'main' into <branch>" branch updates. The other ~3015 commits are correct. ## Root cause The forge writes a server-side merge commit as the authenticated account. It represents that account with the account noreply email. A local merge would use the git identity (`jon@sixfold.space`), so the noreply email is the sign that the forge minted the commit. The trigger was the branch-UPDATE step: `default_update_style` was `merge`, so updating a PR branch with `main` minted a merge commit, and the fast-forward merge then carried it onto `main`. ## Prevention (done) I set `default_update_style` to `rebase`. `default_merge_style` is already `fast-forward-only`. Now no forge path mints a commit: the merge fast-forwards, and a branch update rebases. No new noreply commit can appear. ## Open decision What to do about the 45 existing commits. Re-authoring them rewrites merged history and forces a push to `main`, the same manual by-hand step as #422. The 44 Codeberg-era commits sit deep in history, so re-authoring them rewrites almost the whole tree and every downstream hash (the GitHub source mirror too, #386). Options: - Re-author only the 1 recent cheshirecube commit; accept the 44 legacy ones as migration history. - Re-author all 45 (deep rewrite). - Accept all 45 as history and rely on the prevention going forward. I need to settle this before any rewrite. ## Related - #422 - re-sign the unsigned commits on main (the same manual force-push rewrite; the recent range could ride together). - #425 item 3 - finish must not leave a mis-authored or unsigned merge commit (tool behavior). - #432 - the fast-forward-only merge flag (the merge-side prevention).
Author
Owner

Decided: accept all 45 noreply-authored merge commits as migration history. No re-authoring.

44 are Codeberg-era migration artifacts and 1 is a recent cheshirecube merge. A deep rewrite of nearly the whole tree and the GitHub mirror (#386) is not worth the attribution gain. Prevention is already applied: fast-forward-only mints no new merge commit, and commit identity now comes from the target repo (PR #448), so no new noreply commits appear going forward.

Because this accepts the 45, the #422 re-sign stays a shallow rewrite of only the six unsigned commits. Clearing needs-decision.

Decided: accept all 45 noreply-authored merge commits as migration history. No re-authoring. 44 are Codeberg-era migration artifacts and 1 is a recent cheshirecube merge. A deep rewrite of nearly the whole tree and the GitHub mirror (#386) is not worth the attribution gain. Prevention is already applied: fast-forward-only mints no new merge commit, and commit identity now comes from the target repo (PR #448), so no new noreply commits appear going forward. Because this accepts the 45, the #422 re-sign stays a shallow rewrite of only the six unsigned commits. Clearing needs-decision.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
sixfold-space/madtea#436
No description provided.