Markus Michalski FAQ

git-sync-all: Sicherheit

Sicherheitsrelevantes Verhalten von git-sync-all: Auto-Commit mit git add -A, Push ohne Rückfrage, Löschung bei --verify, Config als Shell-Skript, Lock-Datei und Zugangsdaten.

English Version

Zurück zur Übersicht

git-sync-all: Sicherheit

Diese Seite fasst zusammen, welche Operationen Daten verändern oder löschen können und was du dagegen tun kannst.

Was das Tool nicht tut

Operationen mit Wirkung

Operation Wann Schutz
git add -A und git commit Bei Änderungen im Arbeitsverzeichnis, nach Rückfrage oder mit --yes --dry-run, --no-commit, .gitignore
git push <remote> <branch> Bei lokalen Commits vor dem Upstream --no-push, --dry-run
git pull --rebase oder git pull Wenn der Upstream neue Commits hat Automatischer Abbruch von Rebase und Merge bei Fehlern, --no-pull
git stash push --include-untracked und git stash pop Stash-Pfad, --no-commit bei Remote-Änderungen Bei Pop-Konflikten bleiben die Änderungen im Stash
git fetch --tags --prune-tags Pro Repository, solange Tags aktiv sind --no-tags. Löscht lokale Tags nur bei fetch.prune=true oder remote.<name>.prune=true
rm -rf <Repository> Nur bei --verify und y Einzelabfrage, ignoriert --yes, nicht ohne Terminal, nicht im Dry-Run

Auto-Commit nimmt alles mit

git add -A stagt jede geänderte und jede nicht verfolgte Datei, die .gitignore nicht ausschließt. Liegen im Arbeitsverzeichnis Zugangsdaten, .env-Dateien oder große Binärdateien, die nicht ignoriert werden, landen sie im Commit und beim Push im Remote. Mit --yes oder SYNC_AUTO_CONFIRM=true gibt es keine Rückfrage und keinen Blick auf die Dateiliste. Prüfe vor dem ersten automatischen Lauf deine .gitignore-Dateien und starte mit --dry-run.

Löschung bei --verify

--verify kann ganze Repository-Verzeichnisse löschen, die nicht im Inventar stehen. Unpushed Commits und uncommittete Dateien gehen dabei verloren. Antworte nur dann mit y, wenn du sicher bist, dass das Repository entbehrlich ist. Alles Weitere steht unter Inventar.

Die Config-Datei wird ausgeführt

Die Config-Datei wird mit source geladen, ein Shell-Skript mit deinen Rechten. Verwende --config nur mit Dateien, denen du vertraust, und achte darauf, dass niemand sonst die Datei beschreiben kann.

Lock-Datei

Das Tool legt ${XDG_RUNTIME_DIR:-/tmp}/git-sync-all.lock mit seiner PID an und entfernt sie beim Beenden. Läuft eine Instanz, beendet sich die zweite mit einem Fehler. Eine veraltete Lock-Datei (PID läuft nicht mehr) wird automatisch entfernt. Ohne XDG_RUNTIME_DIR liegt die Datei in /tmp, einem Verzeichnis, das alle lokalen Benutzer beschreiben können.

Eine zweite Instanz, die wegen der laufenden ersten abbricht, löscht beim Beenden deren Lock-Datei. Eine dritte Instanz kann dann trotz laufender erster starten. Der Lock schützt daher nicht zuverlässig vor parallelen Läufen.

Netzwerkzugriffe

Das Tool spricht ausschließlich mit den Git-Remotes der Repositories. Nur --issues und die Clone-Hinweise von --verify rufen zusätzlich die GitHub CLI gh auf (gh auth status, gh issue list, gh api user).

Empfehlungen