fix(git): wachtrij en werkkopie horen bij één repository #359
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
release-blocker
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!359
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/git-outbox-scope"
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?
Gevonden bij het voorbereiden van meerdere git-verbindingen (#358), maar het is een bestaande fout op
maindie losstaand gerepareerd kan worden.Wat er mis is
De sleutel van de outbox en de draft-store droeg alleen de deckmap:
Zolang er precies één repository kon bestaan viel dat niet op. Zodra er twee zijn:
pending()levert de hele wachtrij op, en_flushGitQueueduwt die naar de forge die op dát moment is ingesteld — dus werk dat voor de ene opdrachtgever wachtte, belandt in de repository van de andere.Er komt geen foutmelding uit, want elke stap op zich klopt. Dit raakt het REST-pad (web en desktop zonder native git); de native mirror was al per repo gescheiden.
De reparatie
Beide zijn gescopet op
GitRepoConfig.storageSlug— dezelfde sleutel waarmee de native mirror al één clone per repo aanhield, nu gedeeld in plaats van gedupliceerd. Een deckmap kan perGitRepoLayoutnooit een:bevatten, dus een gescopede sleutel is niet te verwarren met een oude.Migratie
Wat er nog wacht is werk dat nog geen server heeft gezien; het laten liggen zou het stilletjes onbereikbaar maken.
adoptLegacyEntries()neemt het daarom over naar de repo die tóén was ingesteld — er was er maar één, dus die is de enige rechthebbende. De overname is idempotent, pakt de sleutels van een andere repo niet af, en overschrijft nooit iets nieuwers. Loopt hij stuk, dan is dat een logregel en geen crash: het oude werk staat er dan nog steeds.Controle
make checkvolledig groen: 3440 tests, dekking 79,2%.test/git_outbox_scope_test.dartlegt de scheiding vast, inclusief het geval dat een flush de wachtrij van de andere repo zou meenemen.🤖 Generated with Claude Code
34ed27ab873af6348cfc