Versionsverwaltung: Git 2.25 vereinfacht Sparse Checkouts
Version 2.25 der verteilten Versionskontrollsystems bringt einen dedizierten Befehl für einen partiellen Checkout mit.
- Rainald Menge-Sonnentag
Zwei Monate nach dem Release von Git 2.24 ist Version 2.25 des Versionsverwaltungssystems erschienen. Das Release der ursprünglich von Linus Torvalds ins Leben gerufenen Open-Source-Software bringt wie üblich zahlreiche Neuerungen und Änderungen mit: Gut 500 Commits von 84 Leuten verzeichnen die Release Notes, von denen jedoch ein Großteil für die meisten Entwickler eher am Rand interessant sind.
Dünn besiedeltes Arbeitsverzeichnis
Besonders nennenswert ist der vereinfachte Umgang mit sogenannten Sparse Checkouts zum Anlegen nicht vollständiger Arbeitskopien. Entwickler definieren dafür Muster, welche Dateien Git beim Checkout aussparen soll. Die Patterns schreiben sie in die Datei $GIT_DIR/info/sparse-checkout.
Neben Mustern zum Einschließen von Bereichen lassen sich auch einzelne Dateien oder Verzeichnisse über !
explizit ausschließen. Um beispielsweise alle Inhalte außer der Datei unwichtig einzuschließen ließe sich folgender Inhalt definieren:
/*
!unwichtig
Die Datei kann recht komplex und unübersichtlich werden und der in Git 2.25 eingeführte Befehl sparse-checkout
vereinfacht das Definieren der Muster. Er bietet die vier Unterbefehle set
, list
, init
und disable
. Die ersten dienen zum Setzen von Patterns beziehungsweise zum Auflisten der zuvor gesetzten Muster. Die letzten beiden Unterkommandos aktivieren beziehungsweise deaktivieren das Sparse Checkout.
Das Kegelprinzip
Über den Befehl sparse checkout
lassen sich beliebig komplexe Muster erstellen, deren Auswertung sich negativ auf die Performance auswirken kann. Der über über git config core.sparseCheckoutCone
aktivierte Cone-Modus schränkt die möglichen Regeln zugunsten der Performance ein. Dabei lässt sich festlegen, dass Git alle Pfade innerhalb eines Verzeichnisses einbezieht oder alle Dateien innerhalb eines bestimmten Pfads. Standardmäßig bezieht die Versionsverwaltung alle Dateien im Stammverzeichnis des Repository ein.
Weitere nennenswerte Neuerungen in Git 2.25 sind eine Fortschrittsanzeige beim Erstellen von Multi-Pack-Indizes und ein verbesserter Debugging-Support beim Lazy Cloning. Der über git apply --3way
angestoßene Three-way Merge, der neben der Quell- und Zieldatei auch die gemeinsame Basis einbezieht, berücksichtigt nun die Konfigurationsvariable merge.conflictStyle
.
Die vollständige Liste der Neuerungen, Bugfixes und Änderungen in Git 2.25 lässt sich den Release Notes entnehmen. Wie üblich bietet der GitHub-Blog eine ausführlichere Beschreibung der Hightlights und konzentriert sich dabei auf das Sparse Checkout. Eine ausführliche Beschreibung des neuen sparse-checkout
-Befehls sowie des Cone-Modus findet sich in der Git-Dokumentation auf GitHub.
(rme)