The strip broke real repositories: restore tolerance for legacy field and ref shapes #104
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
e5096ffc(patchbf948322) removed compatibility that live data still depends on. Two of the user's repositories are now unreadable and unsyncable.Scope:
eitri(17 legacy patch refs) andwaystty(11). Both hold the same shapes on their sourcehut remote, byte-identical to local.The layout is only half of it. I migrated a copy of
eitriwith a pre-strip binary: 17 bare refs became 17/eventsrefs, and the current binary still reads only 1 of 17. The rest fail with:The event is a merge recorded before merge-recording stored a commit:
Why this happened, plainly. The strip decision was made on an audit of this clone and the five repositories on the server. The user's other clones sat in
~/code/radthe whole time, reachable, and were never examined.committolerance was then removed on a zero-users finding drawn from that narrow sample.The reasoning failure is sharper than the sampling one. For
base: NoneI argued — correctly — that "this revision has no recorded base" is a real state, not a transitional artefact, because a revision recorded before the field existed genuinely has no base and no migration can invent one. The identical argument applies tocommiton a merge event, and I did not apply it. One field was kept on principle, the other removed on a headcount.Also wrong: the recovery advice.
fetch the patch from a remote holding the current layout, or delete the stale ref if it exists nowhere elseoffers two remedies, and neither fits the most likely case — every copy is old, so there is nothing newer to fetch and the ref exists elsewhere. It reads as helpful and is a dead end.Wanted
PatchMerge.commitoptional (matching howRevision.baseis handled), and anything else the audit below turns up.<id>layout, or restore migration. Reading is the minimum; a repository must not become unreachable because the only copies are old.~/code/rad, not a sample:git-collab refsper repo for ref shapes, plus a field-level scan of everyevent.jsonfor missing/emptycommit, absentbase, and reviews without a revision.e5096ffc. Removing dead code was fine; removing tolerance for data shapes was not. The distinction is whether the shape can still exist in data someone holds — and pre-release does not mean the user's own repositories are disposable.Migrated from git-collab issue
05b18df6b5902b0c9cead855f916be1b75af9f59.Original author: a73x dev@a73x.sh.
Close reason: merged in patch
2cb9ca96