Der Vault-Root pusht ab jetzt nach jeder Änderung an CLAUDE.md, AI/Regelwerk/, .claude/agents/, .claude/skills/, .claude/settings.json oder .vault-tools/ selbsttätig nach Gitea. - .vault-tools/auto-push/auto_push.py: PostToolUse-Hook, committet und pusht. Fehlendes Token, fehlendes Remote und gescheiterter Push sind Befunde und gehen in den Kontext, nicht ins Schweigen. - .vault-tools/auto-push/askpass.py: reicht GITEA_TOKEN an git weiter, damit es weder in .git/config noch in einer Kommandozeile steht. - .vault-tools/auto-push/faelle_auto_push.py: 28 Fälle gegen ein echtes Wegwerf-Repo mit echtem Remote, alle bestanden. Der Lauf hat zwei Fehler gefunden, die jetzt behoben sind: die Pfadauflösung scheiterte an Windows-Kurznamen, und die Laufzeitsperre landete im Repo. - AI/Regelwerk/veroeffentlichung.md und ein Abschnitt im Stamm halten die Regel fest. Co-Authored-By: Claude Opus 5 <[email protected]>
39 lines
1.2 KiB
Python
39 lines
1.2 KiB
Python
"""GIT_ASKPASS-Helfer: gibt das Gitea-Token aus der Umgebung an git weiter.
|
|
|
|
Ohne diesen Helfer landet das Token entweder in .git/config (Remote-URL mit
|
|
Zugangsdaten) oder in einer Kommandozeile (http.extraheader) und ist dort fuer
|
|
jeden Prozess der Maschine lesbar. git ruft dieses Skript mit der Eingabe-
|
|
aufforderung als Argument auf und liest die Antwort von stdout.
|
|
|
|
Eine fehlende Variable ist ein Befund: das Skript endet mit Exit 1 und einer
|
|
Meldung auf stderr, statt eine leere Zeile auszugeben. Sonst haengt git an
|
|
einer stillen Fehlanmeldung.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
import sys
|
|
|
|
BENUTZER_VARIABLE = "GITEA_BENUTZER"
|
|
TOKEN_VARIABLE = "GITEA_TOKEN"
|
|
|
|
|
|
def main(argumente: list[str]) -> int:
|
|
frage = " ".join(argumente).lower()
|
|
if "username" in frage or "benutzer" in frage:
|
|
name = "GITEA_BENUTZER"
|
|
wert = os.environ.get(BENUTZER_VARIABLE, "").strip()
|
|
else:
|
|
name = "GITEA_TOKEN"
|
|
wert = os.environ.get(TOKEN_VARIABLE, "").strip()
|
|
if not wert:
|
|
sys.stderr.write(f"{name} ist nicht gesetzt oder leer.\n")
|
|
return 1
|
|
sys.stdout.write(wert + "\n")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main(sys.argv[1:]))
|