Changeset 5861849 in Klonkt for src/services

Timestamp:
08/07/2026 08:42:04 AM (5 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
4f322bc
Parents:
7aa3140
git-author:
Robin <roboburr@…> (08/07/2026 08:41:51 AM)
git-committer:
roboburr <roboburr@…> (08/07/2026 08:42:04 AM)
Message:

De updater diept de checkout eenmalig uit, zodat terugrollen kan

Gevonden bij het doorlezen van /usr/local/bin/klonkt-update op een productiehost
met zeven instances. Terugrollen was daar niet moeilijk maar onmogelijk:

git fetch --depth 1 origin main
git checkout -qf -B main FETCH_HEAD

--depth 1 haalt alleen de nieuwste commit op en checkout -f gooit de vorige boom
weg. Na een update stond de vorige versie NERGENS meer op die machine. Een
slechte release neemt alle instances tegelijk mee, en de enige uitweg was opnieuw
van GitHub halen -- als GitHub op dat moment bereikbaar is en als je weet welke
commit je wilt.

De updater diept nu EENMALIG uit (fetch --unshallow) als de checkout ondiep is, en
haalt daarna gewoon op. Dat koopt de geschiedenis terug; elke volgende fetch houdt
hem. De check gaat via rev-parse --is-shallow-repository, want --unshallow op een
complete repo is een fout, geen no-op.

Daarnaast drukt hij na een geslaagde update de vorige commit af mét het commando
om terug te gaan. Geschiedenis alleen is geen terugrol; om drie uur 's nachts heb
je ook de regel nodig.

Getest op een echte ondiepe kloon (file:// transport, want git negeert --depth bij
een lokaal pad): 1 commit -> deepen -> 1045 commits -> checkout van HEAD~3 werkt.
Tweede run slaat het deepenen over. Het gegenereerde script is met bash -n
gecontroleerd.

install.sh blijft ondiep klonen: dat houdt een verse installatie snel, en de
eerste klonkt-update diept alsnog uit. Voor de installatie zelf valt er toch
niets terug te rollen.

(No files)

Note: See TracChangeset for help on using the changeset viewer.