init-phone: Benutzername aus der Klon-Adresse entfernen

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>
This commit is contained in:
Stefan
2026-08-10 17:04:38 +02:00
co-authored by Claude Opus 5
parent c7221e18ad
commit 1cea1df9e7
2 changed files with 24 additions and 21 deletions
+15 -21
View File
@@ -35,8 +35,16 @@ case "$REPO" in
exit 1 ;;
esac
# Benutzernamen aus der Adresse entfernen. Lesen geht anonym; steht ein Name in
# der URL, fragt git trotzdem nach einem Passwort — auf einer Bildschirmtastatur
# eine unnötige Quälerei. Zum Schreiben braucht man ihn ohnehin nur auf dem PC.
REPO_ROH="$REPO"
REPO=$(printf '%s' "$REPO" | sed -E 's#^(https?://)[^/@]+@#\1#')
[ "$REPO" != "$REPO_ROH" ] && ANONYM=1 || ANONYM=0
kopf "HPOS — Ersteinrichtung auf dem Telefon"
hinweis "Repo: $REPO"
[ "$ANONYM" = 1 ] && hinweis "(Benutzername entfernt — gelesen wird anonym)"
# ── git ──────────────────────────────────────────────────────────────────────
kopf "git"
@@ -48,26 +56,9 @@ else
else fehl "Installation von git fehlgeschlagen"; exit 1; fi
fi
# ── Zugangsdaten ─────────────────────────────────────────────────────────────
# Bei einem privaten Repo fragt git bei jedem Zugriff nach dem Passwort. Auf einer
# Bildschirmtastatur ist das eine Zumutung, deshalb wird der Speicher angeboten.
# Er legt die Zugangsdaten im Klartext unter ~/.git-credentials ab — das gehört
# gesagt, damit die Entscheidung bewusst fällt.
case "$REPO" in
https://*@*)
if [ ! -f "$HOME/.git-credentials" ]; then
kopf "Zugangsdaten"
hinweis "Das Repo verlangt vermutlich ein Passwort."
printf ' Nach der Eingabe dauerhaft merken? (Klartext in ~/.git-credentials) [j/N] > '
read -r MERKEN
case "${MERKEN:-n}" in
j|J) git config --global credential.helper store
ok "Passwort wird nach der ersten Eingabe gespeichert" ;;
*) hinweis "Dann fragt git bei jedem Zugriff erneut." ;;
esac
fi
;;
esac
# Das Telefon liest nur. Es soll nie versehentlich versuchen zurückzuschreiben —
# ein Push von hier wäre weder gewollt noch möglich.
git config --global credential.helper "" 2>/dev/null || true
# ── Holen oder aktualisieren ─────────────────────────────────────────────────
kopf "Repo"
@@ -81,12 +72,15 @@ if [ -d "$ZIEL/.git" ]; then
exit 1
fi
else
# --depth reicht nicht: für 'git pull' später brauchen wir eine vollwertige
# Arbeitskopie, kein abgeschnittenes Archiv.
if git clone "$REPO" "$ZIEL"; then
ok "geklont nach $ZIEL"
else
fehl "git clone fehlgeschlagen."
hinweis "Bei privaten Repos: Benutzername und Passwort prüfen."
hinweis "Adresse war: $REPO"
hinweis "Ist das Repo öffentlich lesbar? Ohne das braucht es Zugangsdaten,"
hinweis "und die gehören nicht aufs Telefon."
exit 1
fi
fi
+9
View File
@@ -282,6 +282,15 @@ if [ -z "$REPO_URL" ]; then
read -r REPO_URL </dev/tty || REPO_URL=""
fi
# Benutzernamen entfernen: das Telefon liest nur, und Lesen geht anonym. Bliebe
# der Name in der Adresse, fragte git dort nach einem Passwort — auf einer
# Bildschirmtastatur eine unnötige Quälerei.
if [ -n "$REPO_URL" ]; then
REPO_URL_ROH="$REPO_URL"
REPO_URL=$(printf '%s' "$REPO_URL" | sed -E 's#^(https?://)[^/@]+@#\1#')
[ "$REPO_URL" != "$REPO_URL_ROH" ] && hinweis "Benutzername für das Telefon entfernt (Lesen geht anonym)"
fi
if [ "$TROCKEN" = 1 ]; then
warn "Trockenlauf — es wird nichts übertragen."
elif [ -z "$REPO_URL" ]; then