Auf dem Gerät schlug 'git clone' mit 'early EOF' und 'invalid index-pack output'
fehl. Die Eingrenzung zeigt: es liegt weder am Telefon noch am Skript.
· Derselbe Fehler tritt vom PC aus auf, mit jeder Variante — flach, Protokoll
v1, ohne Kompression, ein Thread, großer postBuffer.
· Die Refs liefert der Server anstandslos.
· Auf eine korrekt aufgebaute upload-pack-Anfrage antwortet er mit 'NAK' und
dann nichts mehr: 8 Bytes, keine Paketdaten, nicht einmal eine Meldung im
Fehlerkanal. Genau das sieht der Client als vorzeitiges Dateiende.
· Ein Archiv derselben Revision lässt sich dagegen fehlerfrei erzeugen.
Die Objekte sind also heil und vollständig; allein das Schnüren des Pakets
scheitert. Das ist serverseitig und von hier weder zu beheben noch zu umgehen.
Damit das Gerät nicht blockiert bleibt, holt init-phone.sh die Quellen im
Fehlerfall über den Archiv-Endpunkt. Der geht nicht über upload-pack und
funktioniert deshalb weiterhin. Das Ergebnis ist ausdrücklich ein Abzug, keine
Arbeitskopie: 'git pull' geht damit nicht, und das Skript sagt das auch so, statt
den Unterschied zu verwischen. Der Weg zurück zur Arbeitskopie steht daneben.
Gegen den echten Server getestet: Archiv gültig, 26 Dateien richtig entpackt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Das Repo ist anonym lesbar; Zugangsdaten braucht nur der Push, und der findet auf
dem PC statt. Stand der Benutzername trotzdem in der URL, fragte git auf dem
Telefon nach einem Passwort — auf einer Bildschirmtastatur eine unnötige Quälerei
für einen Zugriff, der gar keine Anmeldung erfordert.
provision.sh entfernt ihn beim Einsetzen der Adresse, init-phone.sh zusätzlich
beim Ausführen — so ist auch eine von Hand übergebene Adresse abgedeckt. Die
Ersetzung greift nur bei http(s); SSH-Adressen bleiben unberührt, dort ist git@
zwingend.
Damit entfällt auch das Angebot, Zugangsdaten auf dem Telefon zu speichern. Der
credential.helper wird dort stattdessen ausdrücklich geleert: das Telefon liest
nur und soll nie versehentlich zurückschreiben wollen.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Bisher schob provision.sh das ganze Repo nach /sdcard. Auf dem Telefon lag damit
eine Kopie, und jede Änderung hätte wieder den PC gebraucht. Jetzt kommt per adb
nur init-phone.sh: es installiert git und klont die Quellen nach ~/hpos. Danach
ist das eine echte Arbeitskopie und Aktualisieren heißt
cd ~/hpos && git pull
Die Repo-Adresse liest provision.sh aus dem origin-Remote und schreibt sie fest
ins übertragene Skript, damit auf einer Bildschirmtastatur nichts abgetippt
werden muss. Bei privaten Repos bietet init-phone.sh an, das Passwort zu
speichern — mit dem ausdrücklichen Hinweis, dass das im Klartext geschieht.
Die Berechtigungen wandern von provision.sh nach install-termux.sh, direkt hinter
die Installation. Eine frisch installierte App ohne Berechtigungen ist eine Falle,
die erst Stunden später zuschnappt: im ersten Gerätelauf als stumme Tonaufnahme
in Beweis S2. RECORD_AUDIO für com.termux wird danach ausdrücklich nachgeprüft,
weil genau daran der Beweis hängt.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>