README: Rückfallebene dokumentieren, wenn git pull scheitert

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) <noreply@anthropic.com>
This commit is contained in:
Stefan
2026-08-10 22:37:31 +02:00
co-authored by Claude Opus 5
parent 985f48177d
commit ec76b785b3
2 changed files with 34 additions and 0 deletions
+26
View File
@@ -79,6 +79,32 @@ Dadurch liegt dort eine echte Arbeitskopie — spätere Änderungen brauchen kei
cd ~/hpos && git pull 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: Details, Stellschrauben und was bei Fehlschlägen zu tun ist:
[`spike/README.md`](spike/README.md). [`spike/README.md`](spike/README.md).
+8
View File
@@ -94,11 +94,19 @@ bash spike/04-s4-intent-handoff.sh
```bash ```bash
cd ~/hpos && git pull 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. Per adb kommt bewusst nur das Startskript aufs Telefon, nicht das Repo selbst.
Dadurch liegt dort eine echte Arbeitskopie statt einer Kopie. 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 Jedes Skript fragt am Ende nach deiner Beurteilung und schreibt sie nach
`spike/out/ergebnisse.tsv`. Rohprotokolle liegen daneben in `spike/out/*.log`. `spike/out/ergebnisse.tsv`. Rohprotokolle liegen daneben in `spike/out/*.log`.