Sapling, un système de contrôle de code source compatible Git

jeune arbre

Sapling met l'accent sur la facilité d'utilisation tout en s'adaptant aux plus grands référentiels du monde.

Facebook dévoilé via un article de blog le système de gestion du code source Gaules utilisé dans le développement de projets internes de l'entreprise. Le système vise à fournir une interface de contrôle de version familier qui peut évoluer vers de très grands référentiels couvrant des dizaines de millions de fichiers, de commits et de branches.

L'idée principale du système est qu'en interagissant avec une partie spéciale du serveur qui fournit le stockage du référentiel, échelle de toutes les opérations en fonction du nombre de fichiers réellement utilisés dans le code sur lequel travaille le développeur et ne dépendent pas de la taille totale de l'ensemble du référentiel.

Par exemple, un développeur peut n'utiliser qu'une petite partie du code d'un très grand référentiel, et seule cette petite partie, et non l'intégralité du référentiel, sera transférée sur son système. Le répertoire de travail est rempli dynamiquement, au fur et à mesure de l'accès aux fichiers du référentiel, ce qui, d'une part, vous permet d'accélérer considérablement le travail avec votre partie du code, mais d'autre part, le ralentit lorsque vous y accédez pour la première fois à de nouveaux fichiers et nécessite un accès réseau constant (fourni séparément et mode de préparation de validation hors ligne).

En plus du chargement adaptatif des données, Sapling met également en œuvre des optimisations visant à réduire la charge d'informations avec un historique des modifications. (par exemple, les 3/4 des données d'un référentiel avec le noyau Linux sont l'historique des modifications).

Pour travailler efficacement avec l'historique des modifications, les données qui lui sont associées sont stockées dans une vue segmentée, ce qui vous permet de télécharger des parties distinctes du graphique de validation à partir du serveur. Le client peut demander au serveur des informations sur la relation de plusieurs confirmations et télécharger uniquement la partie nécessaire du graphique.

Le projet est en développement depuis 10 ans et a été créé pour résoudre les problèmes lors de l'accès à de très grands référentiels monolithiques avec une branche principale, où la pratique consistant à utiliser l'opération "rebase" au lieu de "fusionner" était pratiquée.

À cette époque, il n'existait pas de solutions ouvertes pour travailler avec de tels référentiels, et les ingénieurs de Facebook ont ​​décidé de créer un nouveau système de contrôle de version qui répondrait aux besoins de l'entreprise, plutôt que de diviser les projets en petits référentiels, ce qui conduirait à une gestion des dépendances plus compliquée ( à un moment donné, pour résoudre un problème similaire, Microsoft a créé la couche GVFS).

Initialement, Facebook utilisait le système Mercurial et le projet Sapling a été initialement développé en complément de Mercurial. Au fil du temps, le système est devenu un projet indépendant avec son propre protocole, format de stockage et algorithmes, qui a également été étendu avec la possibilité d'interagir avec les référentiels Git.

Pour le travail, l'utilitaire de ligne de commande "sl" est proposé, qui implémente des concepts typiques, des flux de travail et une interface familière aux développeurs familiarisés avec Git et Mercurial. La terminologie et les commandes de Sapling sont légèrement différentes de Git et plus proches de Mercurial.

Parmi les fonctionnalités supplémentaires de Sapling, met en lumière prise en charge de "l'enregistrement intelligent" (smartlog), qui vous permet d'évaluer visuellement l'état de votre référentiel, mettre en évidence les informations les plus importantes et filtrer les détails mineurs. Par exemple, lorsque vous exécutez l'utilitaire sl sans arguments, seuls vos propres changements locaux sont affichés (les étrangers sont réduits), le statut des branches externes, les fichiers modifiés et les nouvelles versions des commits sont affichés. De plus, une interface Web interactive est fournie pour une navigation rapide dans le journal intelligent, l'arborescence des modifications et les validations.

Une autre amélioration notable de Sapling est que cela facilite grandement le processus de correction et d'analyse des erreurs et de retour à un état antérieur. Par exemple, les commandes « sl undo », « sl redo », « sl uncommit » et « sl unmend » sont suggérées pour inverser de nombreuses opérations, « sl hide » et « sl unhide » pour masquer temporairement les commits et pour une navigation interactive. déclare que Sapling prend également en charge le concept de pile de validation, qui vous permet d'organiser une révision étape par étape en décomposant une fonctionnalité complexe en un ensemble de modifications incrémentielles plus petites et plus compréhensibles (d'un cadre de base à une fonctionnalité finale). .

Séparément, une partie serveur a été développée pour un travail à distance efficace avec les référentiels et un système de fichiers virtuel pour travailler avec une partie locale d'une partie du référentiel comme s'il s'agissait d'un référentiel complet (le développeur voit l'intégralité du référentiel, mais seules les données demandées sont copiées sur le système local, auquel on accède).

Le code de ces composants utilisés dans l'infrastructure de Facebook n'est pas encore ouvert, mais la société a promis de le publier à l'avenir. Cependant, les prototypes du serveur Mononoke (en Rust) et VFS EdenFS (en C++) se trouvent déjà dans le dépôt Sapling. Ces composants sont facultatifs et le client Sapling est suffisant pour fonctionner, ce qui prend en charge le clonage des référentiels Git, l'interaction avec les serveurs basés sur Git LFS et le travail avec des hôtes git comme GitHub.

Plusieurs plugins ont été préparés pour Sapling, y compris l'interface ReviewStack pour la révision des modifications (code sous GPLv2), qui vous permet de traiter les demandes d'extraction sur GitHub et d'utiliser une vue de pile de modifications.

Si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.