Zum Hauptinhalt Zur Navigation

Versionskontrolle Sapling: Meta legt Git-Alternative offen

Mit Sapling arbeitet Facebook an einer eigenen Versionskontrolle. Das soll vor allem das riesige Monorepo besser unterstützten.
/ Sebastian Grüner
16 Kommentare News folgen (öffnet im neuen Fenster)
Sapling (englisch für Setzling) ist Open Source. (Bild: Pixabay)
Sapling (englisch für Setzling) ist Open Source. Bild: Pixabay

Das Entwicklungsteam von Facebook und Mutterkonzern Meta hat mit Sapling ein neues Versionskontrollsystem vorgestellt(öffnet im neuen Fenster) und den zu Git kompatiblen Client als Open Source veröffentlicht. Eigenen Angaben zufolge arbeitet das Team bereits seit etwa zehn Jahren an Sapling. Das soll sich leicht skalieren lassen und besonders nutzerfreundlich sein.

Im Vergleich zu Git und Mercurial, das zuvor viel von Facebook genutzt wurde, sollten viele Konzepte sowie grundlegende Arbeitsweisen neuen Nutzern bekannt vorkommen, heißt es in der Ankündigung. Zusammen mit dem Server und einem virtuellen Dateisystem, die künftig ebenfalls als Open Source bereitstehen sollen, soll Sapling mit Millionen von Dateien, Commits und Versionszweigen in einem riesigen monolithischen Repository (Monorepo) zurechtkommen.

Die Vorteile des Monorepos sind laut Facebook vor allem eine vereinfachte Abhängigkeitsverwaltung und die Möglichkeit, schnell weitreichende Änderungen vorzunehmen. Vorhandene Kontrollsysteme waren und sind laut Facebook aber nicht in der Lage, Repositorys dieser Größe zu verarbeiten. Deshalb starteten die Beteiligten ihr eigenes Projekt, zunächst als Erweiterung für Mercurial, das dann aber beständig weiter wuchs.

Einfacher für Nutzer, schneller dank Tricks

Mit alternativen Werkzeugen müssen Entwickler laut Facebook oft ein komplexes mentales Modell des Repositorys verinnerlichen und werden gezwungen, "esoterische Kommandos" für einfache Aufgaben zu verwenden. Sapling soll das beheben. Als Beispiel nennt Facebook etwa ein smartes Log, die einfache Möglichkeit, schnell Fehler zu beheben, sowie die inkrementelle Arbeit mit einem Stapel von Commits. Letzteres sei mit Git besonders schwierig. Sapling erleichtere diese aber nicht nur, mit Reviewstack(öffnet im neuen Fenster) hätten die Entwickler zusätzlich ein Werkzeug erstellt, um diese Stapel besser überprüfen zu können, heißt es.

Um über die Codebasis von Facebook skalieren zu können, nutzt Sapling einige Tricks. Dazu gehört etwa, dass beim Klonen eines Repositorys zunächst so gut wie keine Historie heruntergeladen wird. Stattdessen werden nur die Dateien, Commits und Zweige heruntergeladen, die zwingend für die eigene Arbeit benötigt werden. Eine ähnliche Funktion liefert Git erst seit diesem Sommer . Vorarbeiten dazu lieferte Version 2 des Git Protokolls .

Hinzu kommen Verbesserungen wie ein sogenanntes segmentiertes Changelog, wobei nur der eigentliche Graph heruntergeladen wird, nicht jedoch sämtliche Commit-Nachrichten. Diese werden erst nachträglich hinzugefügt, falls notwendig. Genutzt wird außerdem ein virtuelles Dateisystem und auch ein Sparse-Check-out, ähnlich zu Git. Für besonders große Dateien wird Git LFS genutzt.


Relevante Themen