Sapling, een Git-compatibel broncodecontrolesysteem

jonge boom

Sapling legt de nadruk op gebruiksgemak tijdens het opschalen naar 's werelds grootste opslagplaatsen.

Facebook onthuld via een blogpost het source code management systeem Jonge boom gebruikt bij de ontwikkeling van interne projecten van het bedrijf. Het systeem heeft tot doel een interface voor versiebeheer te bieden vertrouwd dat kan worden geschaald naar zeer grote repositories die tientallen miljoenen bestanden, commits en branches omvatten.

Het belangrijkste idee van het systeem is dat door interactie met een speciaal deel van de server dat repository-opslag biedt, alle bewerkingen schalen op basis van het aantal bestanden daadwerkelijk gebruikt in de code waaraan de ontwikkelaar werkt, en zijn niet afhankelijk van de totale grootte van de gehele repository.

Een ontwikkelaar kan bijvoorbeeld slechts een klein deel van de code uit een zeer grote repository gebruiken, en alleen dit kleine deel, en niet de hele repository, wordt naar zijn systeem overgebracht. De werkdirectory wordt dynamisch gevuld naarmate de bestanden in de repository worden geopend, waardoor u aan de ene kant het werk met uw deel van de code aanzienlijk kunt versnellen, maar aan de andere kant het vertraagt ​​​​wanneer u er toegang toe hebt voor de eerste keer naar nieuwe bestanden en vereist constante netwerktoegang (apart geleverd en offline-commit voorbereidingsmodus).

Naast adaptief laden van gegevens, Sapling implementeert ook optimalisaties die gericht zijn op het verminderen van de informatiebelasting met een geschiedenis van wijzigingen. (3/4 van de gegevens in een repository met de Linux-kernel is bijvoorbeeld wijzigingsgeschiedenis).

Om effectief met de wijzigingsgeschiedenis te werken, worden de bijbehorende gegevens opgeslagen in een gesegmenteerde weergave, waardoor u afzonderlijke delen van de commit-grafiek van de server kunt downloaden. De client kan de server om informatie vragen over de relatie van verschillende bevestigingen en alleen het benodigde deel van de grafiek downloaden.

Het project is de afgelopen 10 jaar in ontwikkeling geweest en is gemaakt om problemen op te lossen bij het benaderen van zeer grote monolithische repositories met een master branch, waar de praktijk van het gebruik van de "rebase" operatie in plaats van "merge" werd geoefend.

Op dat moment waren er geen open oplossingen voor het werken met dergelijke repositories, en Facebook-ingenieurs besloten een nieuw versiebeheersysteem te maken dat aan de behoeften van het bedrijf zou voldoen, in plaats van projecten op te splitsen in kleine repositories, wat zou leiden tot ingewikkelder afhankelijkheidsbeheer ( ooit heeft Microsoft, om een ​​soortgelijk probleem op te lossen, de GVFS-laag gemaakt).

Aanvankelijk gebruikte Facebook het Mercurial-systeem en het Sapling-project werd aanvankelijk ontwikkeld als aanvulling op Mercurial. Na verloop van tijd werd het systeem een ​​onafhankelijk project met zijn eigen protocol, opslagformaat en algoritmen, die ook werd uitgebreid met de mogelijkheid om te communiceren met Git-repositories.

Voor het werk, het opdrachtregelhulpprogramma "sl" wordt voorgesteld, die typische concepten, workflows en een interface implementeert die bekend zijn bij ontwikkelaars die bekend zijn met Git en Mercurial. De terminologie en commando's in Sapling verschillen enigszins van Git en komen dichter bij Mercurial.

Onder de extra functies van Sapling, benadrukt de ondersteuning voor “slim registreren” (smartlog), waarmee u de status van uw repository visueel kunt beoordelen, markeer de belangrijkste informatie en filter kleine details eruit. Als je bijvoorbeeld het hulpprogramma sl uitvoert zonder argumenten, worden alleen je eigen lokale wijzigingen weergegeven (buitenlandse zijn samengevouwen), de status van externe branches, gewijzigde bestanden en nieuwe versies van commits worden weergegeven. Daarnaast is er een interactieve webinterface voor snelle navigatie door het slimme logboek, de wijzigingsboom en commits.

Een andere opmerkelijke verbetering in Sapling is dat het maakt het proces van het oplossen en analyseren van fouten en het terugkeren naar een eerdere toestand veel eenvoudiger. De commando's "sl undo", "sl redo", "sl uncommit" en "sl unmend" worden bijvoorbeeld aanbevolen voor het ongedaan maken van veel bewerkingen, "sl hide" en "sl unhide" voor het tijdelijk verbergen van commits en voor interactieve navigatie. states Sapling ondersteunt ook het concept van een commit-stack, waarmee je een review stap voor stap kunt organiseren door complexe functionaliteit op te splitsen in een kleinere, meer begrijpelijke incrementele set wijzigingen (van een basisframework tot een laatste feature).

Afzonderlijk, voor effectief werken op afstand met repositories is een servergedeelte ontwikkeld en een virtueel bestandssysteem om met een lokaal deel van een deel van de repository te werken alsof het een volledige repository is (de ontwikkelaar ziet de hele repository, maar alleen de gevraagde gegevens worden gekopieerd naar het lokale systeem, waartoe toegang wordt verkregen).

De code voor deze componenten die in de infrastructuur van Facebook worden gebruikt, is nog niet open, maar het bedrijf heeft beloofd deze in de toekomst vrij te geven. De prototypes van de Mononoke-server (in Rust) en VFS EdenFS (in C++) zijn echter al te vinden in de Sapling-repository. Deze componenten zijn optioneel en de Sapling-client is voldoende om mee te werken, die het klonen van Git-repository's, interactie met Git LFS-gebaseerde servers en werken met git-hosts zoals GitHub ondersteunt.

Er zijn verschillende plug-ins voorbereid voor Sapling, inclusief de ReviewStack-interface voor het beoordelen van wijzigingen (code onder GPLv2), waarmee u pull-aanvragen op GitHub kunt verwerken en een change stack-weergave kunt gebruiken.

Als u er meer over wilt weten, kunt u de details raadplegen In de volgende link.


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.