Versionsverwaltung: Git 2.25 vereinfacht Sparse Checkouts
Version 2.25 der verteilten Versionskontrollsystems bringt einen dedizierten Befehl fĂĽr einen partiellen Checkout mit.
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)