fix(gitmirrors): zot-src backs up a branch that does not exist #636
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/zot-src-branch-filter"
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/zot-srchas not been backed up since2026-09-11T04:49:51Z. Forgejo's own push mirror row carries the reason:The patch branch was created as
seanfarmand later renamed totrunk, the name the rest of the fleet uses. ThebranchFilternever followed.A push mirror fails atomically, so naming one absent branch did not cost that branch — it stopped
mainbeing backed up as well. Same failure that took 11 of 28 repositories on 2026-08-11, and the file's own comment states the rule it broke:Measured on the source before changing it —
zot-srchas exactly:Nothing was lost
Worth recording, because this repository is a fork whose patches exist nowhere else. Codeberg
someara/zot-srcstill holds the pre-rename branch:refs/heads/mainb689b062mainrefs/heads/seanfarm97d35c01trunkAfter this lands the backup carries
main,trunk, and that orphanseanfarmat the same commit astrunk. The orphan is left alone rather than deleted — it costs nothing, and removing a branch from a backup to tidy it is not a trade this repository makes.How it was found
Every guard here reads the tree, and the tree was self-consistent: the CR said
main,seanfarmand Forgejo's live mirror saidmain,seanfarmtoo. What disagreed was the source repository — which no hermetic guard can see.tests/gitmirror-fleet.shsays as much itself: "this checks declared state only; delivery proof uses exact remote refs."This came out of measuring the whole fleet while migrating mirror ownership to binjovi: 38 mirrors, every branch of every filter resolved against its source. This is the only one that does not exist.
The same sweep found
orycarrying a day-stalePushRejectedfor a divergence that had already resolved — both sides at62cfd679. A no-op resync cleared it, no change needed.Note for the reviewer
Forgejo has no PATCH for a push mirror, so forgejo-operator can only converge this by delete-and-recreate. Whether it does is worth watching after this deploys: if the live row still reads
main,seanfarm, the operator cannot converge a mirror at all, which matters for the migration work in flight.https://claude.ai/code/session_01TdW5FSvRJW8CtGnpd29Xp8