Sapling, ein Git-kompatibles Quellcode-Kontrollsystem

Schössling

Sapling betont die Benutzerfreundlichkeit bei der Skalierung auf die größten Repositories der Welt.

Facebook enthüllt durch einen Blogbeitrag das Quellcodeverwaltungssystem junger Baum bei der Entwicklung interner Projekte des Unternehmens verwendet. Das System zielt darauf ab, eine Schnittstelle zur Versionskontrolle bereitzustellen vertraut, das auf sehr große Repositories skalieren kann, die mehrere zehn Millionen Dateien, Commits und Branches umfassen.

Die Hauptidee des Systems besteht darin, dass durch die Interaktion mit einem speziellen Teil des Servers, der Repository-Speicher bereitstellt, Alle Vorgänge werden basierend auf der Anzahl der Dateien skaliert tatsächlich in dem Code verwendet werden, an dem der Entwickler arbeitet, und sind nicht von der Gesamtgröße des gesamten Repositorys abhängig.

Beispielsweise kann ein Entwickler nur einen kleinen Teil des Codes aus einem sehr großen Repository verwenden, und nur dieser kleine Teil und nicht das gesamte Repository wird auf sein System übertragen. Das Arbeitsverzeichnis wird dynamisch gefüllt, wenn auf die Repository-Dateien zugegriffen wird, was Ihnen einerseits die Arbeit mit Ihrem Teil des Codes erheblich beschleunigen lässt, andererseits aber beim Zugriff verlangsamt das erste Mal zu neuen Dateien und erfordert ständigen Netzwerkzugriff (separat bereitgestellt und Offline-Commit-Vorbereitungsmodus).

Zusätzlich zum adaptiven Laden von Daten Sapling implementiert auch Optimierungen, die darauf abzielen, die Informationslast mit einer Änderungshistorie zu reduzieren. (z. B. sind 3/4 der Daten in einem Repository mit dem Linux-Kernel Änderungshistorie).

Um effektiv mit dem Änderungsverlauf zu arbeiten, werden die damit verbundenen Daten in einer segmentierten Ansicht gespeichert, die es Ihnen ermöglicht, separate Teile des Commit-Diagramms vom Server herunterzuladen. Der Client kann den Server nach Informationen über die Beziehung mehrerer Bestätigungen fragen und nur den notwendigen Teil des Diagramms herunterladen.

Das Projekt befindet sich seit 10 Jahren in der Entwicklung und wurde erstellt, um Probleme beim Zugriff auf sehr große monolithische Repositories mit einem Master-Zweig zu lösen, bei dem die Verwendung der Operation "Rebase" anstelle von "Merge" praktiziert wurde.

Zu dieser Zeit gab es keine offenen Lösungen für die Arbeit mit solchen Repositories, und Facebook-Ingenieure beschlossen, ein neues Versionskontrollsystem zu erstellen, das die Anforderungen des Unternehmens erfüllt, anstatt Projekte in kleine Repositories aufzuteilen, was zu einem komplizierteren Abhängigkeitsmanagement führen würde ( um ein ähnliches Problem zu lösen, hat Microsoft einmal die GVFS-Schicht erstellt).

Anfangs verwendete Facebook das Mercurial-System und das Sapling-Projekt wurde ursprünglich als Ergänzung zu Mercurial entwickelt. Im Laufe der Zeit wurde das System zu einem eigenständigen Projekt mit eigenem Protokoll, Speicherformat und Algorithmen, das auch um die Fähigkeit zur Interaktion mit Git-Repositories erweitert wurde.

Für die Arbeit, das Befehlszeilenprogramm "sl" wird vorgeschlagen, das typische Konzepte, Arbeitsabläufe und eine Benutzeroberfläche implementiert, die Entwicklern vertraut sind, die mit Git und Mercurial vertraut sind. Die Terminologie und Befehle in Sapling unterscheiden sich geringfügig von Git und nähern sich Mercurial an.

Unter den zusätzlichen Funktionen von Sapling, hebt die hervor Unterstützung für „intelligente Registrierung“ (Smartlog), mit dem Sie den Status Ihres Repositorys visuell beurteilen können, Heben Sie die wichtigsten Informationen hervor und filtern Sie kleinere Details heraus. Wenn Sie beispielsweise das Dienstprogramm sl ohne Argumente ausführen, werden nur Ihre eigenen lokalen Änderungen angezeigt (fremde werden reduziert), der Status externer Branches, geänderter Dateien und neuer Versionen von Commits angezeigt. Darüber hinaus wird eine interaktive Webschnittstelle zur schnellen Navigation durch das intelligente Protokoll, den Änderungsbaum und die Commits bereitgestellt.

Eine weitere bemerkenswerte Verbesserung in Sapling ist das Es erleichtert das Beheben und Analysieren von Fehlern und das Zurücksetzen auf einen früheren Zustand erheblich. Beispielsweise werden die Befehle „sl undo“, „sl redo“, „sl uncommit“ und „sl unmend“ vorgeschlagen, um viele Operationen rückgängig zu machen, „sl hide“ und „sl unhide“ zum vorübergehenden Ausblenden von Commits und zum interaktiven Navigieren stellt fest, dass Sapling auch das Konzept eines Commit-Stacks unterstützt, mit dem Sie eine Überprüfung Schritt für Schritt organisieren können, indem Sie komplexe Funktionen in kleinere, verständlichere inkrementelle Änderungen aufteilen (von einem grundlegenden Framework bis zu einem endgültigen Feature).

Separat, Für die effektive Remote-Arbeit mit Repositories wurde ein Serverteil entwickelt und ein virtuelles Dateisystem, um mit einem lokalen Teil eines Teils des Repositorys zu arbeiten, als wäre es ein vollständiges Repository (der Entwickler sieht das gesamte Repository, aber nur die angeforderten Daten werden in das lokale System kopiert, auf das zugegriffen wird).

Der Code für diese in der Infrastruktur von Facebook verwendeten Komponenten ist noch nicht offen, aber das Unternehmen hat versprochen, ihn in Zukunft zu veröffentlichen. Die Prototypen von Mononoke-Server (in Rust) und VFS EdenFS (in C++) sind jedoch bereits im Sapling-Repository zu finden. Diese Komponenten sind optional und der Sapling-Client reicht aus, um damit zu arbeiten, der das Klonen von Git-Repositories, die Interaktion mit Git-LFS-basierten Servern und die Arbeit mit Git-Hosts wie GitHub unterstützt.

Für Sapling wurden mehrere Plugins vorbereitet, einschließlich der ReviewStack-Schnittstelle zum Überprüfen von Änderungen (Code unter GPLv2), mit der Sie Pull-Requests auf GitHub verarbeiten und eine Änderungsstapelansicht verwenden können.

Wenn Sie daran interessiert sind, mehr darüber zu erfahren, können Sie die Details konsultieren im folgenden Link.


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.