Markus Michalski FAQ

git-sync-all: Installation

Installation von git-sync-all unter Linux, macOS und Windows: Symlink, Kopie per make, PowerShell-Installer, Git-Alias, Voraussetzungen und Deinstallation.

English Version

Zurück zur Übersicht

git-sync-all: Installation

Voraussetzungen

Komponente Anforderung Hinweis
Bash 4.3 oder neuer, 4.4 empfohlen Der Code verwendet Namerefs (local -n, ab 4.3) und assoziative Arrays. Leere Arrays unter set -u werden erst ab 4.4 fehlerfrei expandiert. Die macOS-Standard-Bash 3.2 reicht nicht.
Git 2.17 oder neuer empfohlen Bei älteren Versionen gibt das Tool eine Warnung aus und läuft weiter.
GNU-Werkzeuge find, sort, grep mit -P Verwendet werden find -print0, sort -z und grep -oP.
make beliebig Nur für make link und make install.
GitHub CLI (gh) beliebig, optional Nur für --issues und für Clone-Hinweise bei --verify.
Git for Windows aktuell Nur unter Windows. Das Tool läuft auf der mitgelieferten bash.exe.

Linux und macOS

Der Symlink zeigt auf bin/git-sync-all im geklonten Repository. Das Skript löst den Symlink zur Laufzeit auf und findet lib/ selbst. Nach einem git pull ist die neue Version sofort aktiv.

git clone https://github.com/markus-michalski/git-sync-all.git
cd git-sync-all
make link PREFIX=$HOME/.local

Ohne PREFIX verwendet das Makefile /usr/local und legt den Link in /usr/local/bin an. Dafür sind meist Root-Rechte nötig. Stelle sicher, dass ~/.local/bin in deinem PATH liegt.

Kopie nach /usr/local

sudo make install

make install kopiert bin/git-sync-all nach $PREFIX/bin und alle lib/*.sh nach $PREFIX/lib/git-sync-all/. Dabei schreibt es den Bibliothekspfad in der installierten Binary um. Nach einem git pull musst du make install erneut ausführen.

Kopie ohne sudo

make install PREFIX=$HOME/.local

Die Beispieldateien aus config/ werden bei make install nicht mitinstalliert. --init-config erzeugt dann eine kurze eingebaute Konfiguration, und --init-inventory erzeugt das Inventar aus den gefundenen Repositories. Beim Symlink-Betrieb werden stattdessen die vollständigen Beispieldateien kopiert.

Windows

Windows hat kein make. Der PowerShell-Installer install.ps1 sucht die bash.exe von Git for Windows, legt einen Bash-Forwarder und eine .cmd-Datei an und ergänzt den Benutzer-PATH.

git clone https://github.com/markus-michalski/git-sync-all.git
cd git-sync-all
.\install.ps1
Parameter Wirkung
-Prefix PFAD Zielverzeichnis. Standard: %LOCALAPPDATA%\Programs\git-sync-all
-Link Kopiert nichts, sondern verweist auf diesen Klon. git pull aktualisiert die Installation.
-NoPathUpdate Lässt den Benutzer-PATH unverändert.
-Uninstall Entfernt die Installation wieder.

Blockiert PowerShell das Skript, starte es mit powershell -ExecutionPolicy Bypass -File .\install.ps1. Öffne nach der Installation ein neues Terminal.

Pfade in SYNC_BASE_DIRS müssen unter Windows in Git-Bash-Schreibweise stehen, zum Beispiel /c/Users/du/projekte. Ein Laufwerksbuchstabe wie C:/... bricht, weil der Doppelpunkt die Einträge trennt.

Git-Alias git check

git-sync-all --setup-alias

Der Befehl setzt global alias.check auf den absoluten Pfad der Binary. Existiert der Alias schon, gibt das Tool eine Warnung aus und überschreibt ihn nicht. Danach startest du das Tool mit git check.

Erste Schritte

git-sync-all --version
git-sync-all --init-config
git-sync-all --dry-run

--init-config legt ~/.config/git-sync-all/config.conf an und öffnet die Datei im Editor, wenn das Terminal interaktiv ist und $EDITOR (alternativ $VISUAL, sonst nano) existiert. Details stehen unter Konfiguration.

Deinstallation

make uninstall PREFIX=$HOME/.local
sudo make uninstall
git config --global --unset alias.check

make uninstall entfernt die Binary beziehungsweise den Symlink und das Verzeichnis $PREFIX/lib/git-sync-all. Konfiguration und Inventar unter ~/.config/git-sync-all/ bleiben bestehen und müssen bei Bedarf von Hand gelöscht werden. Unter Windows entfernt .\install.ps1 -Uninstall die Installation.