From ec76b785b3a1207ee220da9b191c09194cc5bcf4 Mon Sep 17 00:00:00 2001 From: Stefan Date: Mon, 10 Aug 2026 22:37:31 +0200 Subject: [PATCH] =?UTF-8?q?README:=20R=C3=BCckfallebene=20dokumentieren,?= =?UTF-8?q?=20wenn=20git=20pull=20scheitert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Der Befehl stand bisher nur in den Antworten im Chat, nicht im Repo — genau die Sorte Wissen, die verloren geht. Aufgenommen mit dem Grund dahinter: 'fatal: early EOF' beim Klonen ist ein serverseitiges Problem, upload-pack stirbt beim Schnüren des Pakets, während die Objekte heil sind. Erkennbar daran, dass sich ein Archiv weiterhin erzeugen lässt — und genau darauf weicht init-phone.sh aus. Ausdrücklich dabei: das Ergebnis ist ein Abzug ohne .git. 'git pull' geht damit nicht mehr, und derselbe Befehl stellt später auch die Arbeitskopie wieder her, sobald der Server sich erholt hat. Co-Authored-By: Claude Opus 5 (1M context) --- README.md | 26 ++++++++++++++++++++++++++ spike/README.md | 8 ++++++++ 2 files changed, 34 insertions(+) diff --git a/README.md b/README.md index 5beb4aa..4687bc9 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,32 @@ Dadurch liegt dort eine echte Arbeitskopie — spätere Änderungen brauchen kei cd ~/hpos && git pull ``` +**Wenn `git pull` scheitert:** + +```bash +rm -rf ~/hpos && bash /sdcard/hpos-init.sh +``` + +Das Startskript versucht zuerst wieder einen Klon und weicht, falls der Server keine +Pakete ausliefert, auf den Archiv-Endpunkt aus (`/archive/main.tar.gz`). Der geht +nicht über `git upload-pack` und funktioniert deshalb auch dann noch. + +Das Ergebnis ist dann allerdings **ein Abzug, keine Arbeitskopie** — `git pull` geht +damit nicht mehr, jede Aktualisierung braucht denselben Befehl erneut. Sobald der +Server wieder Pakete liefert, stellt genau dieser Befehl auch die Arbeitskopie +wieder her. + +Typische Meldung, wenn es so weit ist: + +``` +fatal: early EOF +fatal: fetch-pack: invalid index-pack output +``` + +Das ist ein serverseitiges Problem — `upload-pack` stirbt beim Schnüren des Pakets, +während die Objekte selbst heil sind. Erkennbar daran, dass sich ein Archiv weiterhin +erzeugen lässt. + Details, Stellschrauben und was bei Fehlschlägen zu tun ist: [`spike/README.md`](spike/README.md). diff --git a/spike/README.md b/spike/README.md index 6072740..5307f18 100644 --- a/spike/README.md +++ b/spike/README.md @@ -94,11 +94,19 @@ bash spike/04-s4-intent-handoff.sh ```bash cd ~/hpos && git pull + +# Falls das scheitert (Server liefert keine Pakete aus): +rm -rf ~/hpos && bash /sdcard/hpos-init.sh ``` Per adb kommt bewusst nur das Startskript aufs Telefon, nicht das Repo selbst. Dadurch liegt dort eine echte Arbeitskopie statt einer Kopie. +Der zweite Befehl weicht auf den Archiv-Endpunkt aus, wenn `git clone` am Server +scheitert. Das Ergebnis ist dann ein Abzug ohne `.git` — `git pull` geht damit nicht +mehr, und jede Aktualisierung braucht denselben Befehl erneut. Sobald der Server +wieder Pakete liefert, stellt er auch die Arbeitskopie wieder her. + Jedes Skript fragt am Ende nach deiner Beurteilung und schreibt sie nach `spike/out/ergebnisse.tsv`. Rohprotokolle liegen daneben in `spike/out/*.log`.