fix(gitmirrors): n8n cannot have a main on codeberg, so stop asking for one #642
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/n8n-main-refname-conflict"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
sean/n8nhas failed every push since 2026-09-01. The reason was never legible until the transport was forced down to HTTP/1.1:A git ref cannot be both a file and a directory. Codeberg
someara/n8nis a full fork of upstream — 3083 branches — and one of them is literally namedmain/handshake-tomi-feedback, sorefs/heads/maincan never exist beside it. The push is atomic, so that single rejected ref tooktrunkandmasterdown with it for ten days.HTTP/2 hid it
Every earlier attempt reported only:
which reads like a size or network fault on a 441 MB repository — and sent the first diagnosis entirely the wrong way, toward seeding the branches by hand.
Dropping
maincosts no contentmainbe6fad77trunkbe6fad77— the same committrunkbe6fad77— backed up, carries the contentThe alternative was deleting that upstream branch from the backup: a destructive write to the off-cluster copy to buy a duplicate ref. Upstream
n8n-io/n8nstill has the commit, so it would have been recoverable — it is simply not a trade worth making when the content is already backed up under another name.The exemption is recorded, not silent
tests/gitmirror-fleet.shrequired bothmainandtrunkfor six repositories.n8nnow has its own case:trunk— so the content stays backed upmain— so this cannot be "helpfully" restored and break the mirror againBoth halves refute: restoring
mainturns the guard red, and droppingtrunkturns it red.If
mainandtrunkever diverge here, clear the conflict on Codeberg and putmainback in both places — the file and the guard say so.How it was found
While measuring delivery for the push-mirror migration to binjovi. Every guard in this repository reads the tree, and the tree was self-consistent here too: the CR and the live Forgejo mirror both said
main,trunk,master. What disagreed was the destination.This is the last of four mirrors that were failing to deliver; the fleet is 38/38 once this lands.
https://claude.ai/code/session_01TdW5FSvRJW8CtGnpd29Xp8
mainon codeberg, so stop asking for onesean/n8n has failed every push since 2026-09-01. The reason was never legible until the transport was forced down to HTTP/1.1: remote: error: 'refs/heads/main/handshake-tomi-feedback' exists; cannot create 'refs/heads/main' A git ref cannot be both a file and a directory. codeberg someara/n8n is a full fork of upstream -- 3083 branches -- and one of them is literally named `main/handshake-tomi-feedback`, so `refs/heads/main` can never exist beside it. The push is ATOMIC, so that single rejected ref took trunk and master down with it for ten days. HTTP/2 HID IT. Every earlier attempt reported only error: RPC failed; curl 92 HTTP/2 stream 5 reset by server (error 0x8 CANCEL) send-pack: unexpected disconnect while reading sideband packet which reads like a size or network fault on a 441 MB repository, and sent the first diagnosis entirely the wrong way -- towards seeding the branches by hand. DROPPING `main` COSTS NO CONTENT. Forgejo's main and trunk are the same commit, be6fad77, and trunk is backed up and carries it. The alternative was deleting that upstream branch from the backup: a destructive write to the off-cluster copy to buy a duplicate ref. Upstream n8n-io/n8n still has the commit, so it would have been recoverable -- it is simply not a trade worth making when the content is already backed up under another name. THE EXEMPTION IS RECORDED, NOT SILENT. tests/gitmirror-fleet.sh required both main and trunk for six repositories. n8n now has its own case: it must name trunk, and it must NOT name main, so neither half can rot. Both refute -- restoring main turns the guard red, and dropping trunk turns it red. Found while measuring delivery for the push-mirror migration to binjovi. Every guard in this repository reads the tree, and the tree was self-consistent here too: the CR and the live Forgejo mirror both said main,trunk,master. What disagreed was the destination. Claude-Session: https://claude.ai/code/session_01TdW5FSvRJW8CtGnpd29Xp8