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:
+15
-21
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user