git-sync-all: Konfiguration
Alle Konfigurationsvariablen von git-sync-all mit Standardwerten, Validierung, Commit-Nachricht-Platzhaltern und der tatsächlichen Rangfolge von CLI, Umgebung und Config-Datei.
git-sync-all: Konfiguration
Config-Datei
Der Pfad ist ${XDG_CONFIG_HOME:-$HOME/.config}/git-sync-all/config.conf. Mit --config DATEI verwendest du eine andere Datei. Existiert die angegebene Datei nicht, läuft das Tool ohne Fehlermeldung mit den Standardwerten weiter.
git-sync-all --init-config
Der Befehl kopiert die Beispieldatei config/config.conf.example an den XDG-Pfad. Fehlt die Beispieldatei (Kopie-Installation), schreibt er eine kurze eingebaute Konfiguration. Die eingebaute Variante setzt SYNC_CONFLICT_STRATEGY und SYNC_COMMIT_BODY nicht. Existiert die Datei schon, ändert der Befehl nichts.
Die Config-Datei ist ein Shell-Skript und wird mit
sourcegeladen. Alles darin wird ausgeführt. Lege sie nur an Orten ab, auf die niemand außer dir Schreibrechte hat.
Variablen
| Variable | Standard | Beschreibung |
|---|---|---|
SYNC_BASE_DIRS |
$HOME/projekte |
Zu durchsuchende Verzeichnisse, durch Doppelpunkt getrennt. Jedes Verzeichnis muss existieren. |
SYNC_SCAN_DEPTH |
3 |
Suchtiefe unterhalb jedes Basisverzeichnisses. 1 bedeutet nur direkte Unterverzeichnisse. Ganzzahl ab 1. |
SYNC_EXCLUDE |
leer | Verzeichnisnamen von Repositories, die übersprungen werden. Doppelpunkt-getrennte Glob-Muster. |
SYNC_INCLUDE |
leer | Wenn gesetzt, werden nur Repositories mit passendem Verzeichnisnamen synchronisiert. |
SYNC_COMMIT_MSG |
chore: auto-sync from {hostname} |
Vorlage der Commit-Nachricht (Platzhalter siehe unten). |
SYNC_COMMIT_BODY |
Automatic synchronization of uncommitted changes. |
Zweiter Absatz der Commit-Nachricht. Nur eine ausdrückliche leere Zuweisung in der Config-Datei entfernt den Body. Eine leere Umgebungsvariable setzt wieder den Standard. |
SYNC_AUTO_CONFIRM |
false |
true beantwortet alle Rückfragen automatisch (wie --yes). |
SYNC_PULL_STRATEGY |
rebase |
rebase (git pull --rebase) oder merge (git pull). Andere Werte sind ein Fehler. |
SYNC_TAGS |
true |
Tags pro Repository per git fetch --tags --prune-tags holen. |
SYNC_REMOTE |
origin |
Name des Remotes. Repositories ohne diesen Remote werden übersprungen. |
SYNC_CONFLICT_STRATEGY |
skip |
Verhalten im Auto-Modus bei überlappenden Änderungen: skip, stash oder commit. |
SYNC_INVENTORY_FILE |
leer | Pfad zur repos.yml. Leer bedeutet XDG-Pfad ${XDG_CONFIG_HOME:-$HOME/.config}/git-sync-all/repos.yml. |
SYNC_VERIFY_GROUP |
all |
Standardgruppe für --verify und --issues. Mehrere Gruppen mit Komma. |
SYNC_GITHUB_USER |
leer | GitHub-Benutzername für die Clone-Hinweise bei --verify. Fehlt er, fragt das Tool gh api user ab. |
SYNC_COLOR |
auto |
auto (nur im Terminal), true/yes/on/always oder false/no/off/never. |
SYNC_VERBOSITY |
1 |
0 leise, 1 normal, 2 Debug. Andere Werte sind ein Fehler. |
SYNC_GITHUB_USER steht nicht in der Beispieldatei, wird aber aus der Config oder der Umgebung gelesen.
Validierung
Beim Start prüft das Tool: jedes Verzeichnis in SYNC_BASE_DIRS existiert, SYNC_PULL_STRATEGY ist rebase oder merge, SYNC_VERBOSITY ist 0, 1 oder 2, SYNC_SCAN_DEPTH ist eine positive Ganzzahl und SYNC_CONFLICT_STRATEGY ist skip, stash oder commit. Bei einem Verstoß endet das Tool mit Config error: ... und Exit-Code 1.
Beispiel
SYNC_BASE_DIRS="$HOME/projekte:$HOME/arbeit"
SYNC_SCAN_DEPTH=3
SYNC_EXCLUDE="vendor:node_modules"
SYNC_COMMIT_MSG="chore: auto-sync from {hostname} on {date}"
SYNC_PULL_STRATEGY="rebase"
SYNC_AUTO_CONFIRM=false
Platzhalter in der Commit-Nachricht
| Platzhalter | Ersetzt durch |
|---|---|
{hostname} |
Ausgabe von hostname |
{date} |
Aktuelles Datum als YYYY-MM-DD |
{repo} |
Name des aktuellen Arbeitsverzeichnisses, aus dem du das Tool startest |
{repo}ist nicht der Name des Repositories, das gerade synchronisiert wird, sondern das Verzeichnis, in dem dugit-sync-allaufgerufen hast. Außerdem hängt der aktuelle Code an jede automatisch erzeugte Commit-Nachricht ein überzähliges}an (zum Beispielchore: auto-sync from workstation}). Das gilt für die Standardvorlage und für Vorlagen aus der Config-Datei. Setzt duSYNC_COMMIT_MSGnur als Umgebungsvariable und nicht in der Config, sind es sogar zwei (}}).
Rangfolge der Einstellungen
Die tatsächliche Reihenfolge hängt davon ab, welche Quelle die Variable setzt.
| Einstellung | Wer gewinnt |
|---|---|
Verzeichnisse als Argumente, --include, --exclude, -v, -q |
Immer die Kommandozeile |
--yes, --no-tags, --no-color, --conflict-strategy |
Die Kommandozeile, aber nur wenn die Config-Datei die Variable nicht selbst setzt |
Umgebungsvariablen (SYNC_...) |
Die Umgebung, aber nur wenn die Config-Datei die Variable nicht selbst setzt |
| Config-Datei | Überschreibt die eingebauten Standardwerte |
Die aus
config/config.conf.examplekopierte Datei setzt unter anderemSYNC_AUTO_CONFIRM,SYNC_TAGS,SYNC_COLORundSYNC_CONFLICT_STRATEGYausdrücklich. Mit dieser Datei haben--yes,--no-tags,--no-colorund--conflict-strategykeine Wirkung, und gleichnamige Umgebungsvariablen werden überschrieben. Die eingebaute Ersatz-Konfiguration einer Kopie-Installation setztSYNC_AUTO_CONFIRM,SYNC_TAGSundSYNC_COLORebenfalls, aber nichtSYNC_CONFLICT_STRATEGY. Kommentiere die betreffenden Zeilen aus, oder pflege eine eigene Datei für Cron-Läufe und übergib sie mit--config.
--no-pull, --no-push, --no-commit und --dry-run sind reine Kommandozeilen-Schalter ohne Config-Variable und wirken immer.
Mehrere Konfigurationen
git-sync-all --config ~/.config/git-sync-all/work.conf ~/arbeit
git-sync-all --config ~/.config/git-sync-all/cron.conf
Siehe auch Verwendung für alle Optionen und Sicherheit für die Hinweise zum Laden der Config.