Sapling, et Git-kompatibelt kildekodekontrolsystem

ungt træ

Sapling lægger vægt på brugervenlighed, mens den skaleres til verdens største depoter.

Facebook afsløret gennem et blogindlæg kildekodestyringssystemet ungt træ bruges i udviklingen af ​​interne projekter i virksomheden. Systemet har til formål at levere en versionskontrolgrænseflade velkendte, der kan skaleres til meget store lagre, der spænder over titusinder af filer, commits og filialer.

Systemets hovedidé er, at ved at interagere med en særlig del af serveren, der giver lagerplads, alle operationer skalerer baseret på antallet af filer faktisk brugt i den kode, udvikleren arbejder på, og er ikke afhængige af den samlede størrelse af hele depotet.

For eksempel kan en udvikler kun bruge en lille del af koden fra et meget stort lager, og kun denne lille del, og ikke hele lageret, vil blive overført til deres system. Arbejdsmappen udfyldes dynamisk, da der tilgås depotfilerne, hvilket på den ene side giver dig mulighed for at fremskynde arbejdet markant med din del af koden, men på den anden side sænker det, når du tilgår den for første gang til nye filer og kræver konstant netværksadgang (leveres separat og offline-forpligtelses-forberedelsestilstand).

Ud over adaptiv dataindlæsning, Sapling implementerer også optimeringer, der har til formål at reducere informationsbelastningen med en historik over ændringer. (for eksempel er 3/4 af dataene i et lager med Linux-kernen ændringshistorik).

For at arbejde effektivt med ændringshistorikken, gemmes de data, der er knyttet til den, i en segmenteret visning, som giver dig mulighed for at downloade separate dele af commit-grafen fra serveren. Klienten kan bede serveren om oplysninger om forholdet mellem flere bekræftelser og kun downloade den nødvendige del af grafen.

Projektet har været under udvikling de seneste 10 år og blev skabt til at løse problemer ved adgang til meget store monolitiske repositories med en mastergren, hvor praksis med at bruge "rebase"-operationen i stedet for "merge" blev praktiseret.

På det tidspunkt var der ingen åbne løsninger til at arbejde med sådanne lagre, og Facebooks ingeniører besluttede at skabe et nyt versionskontrolsystem, der ville opfylde virksomhedens behov, i stedet for at opdele projekter i små lagre, hvilket ville føre til mere kompliceret afhængighedsstyring ( på én gang, for at løse et lignende problem, oprettede Microsoft GVFS-laget).

I første omgang brugte Facebook Mercurial-systemet og Sapling-projektet blev oprindeligt udviklet som en tilføjelse til Mercurial. Med tiden blev systemet et selvstændigt projekt med sin egen protokol, lagerformat og algoritmer, som også blev udvidet med muligheden for at interagere med Git repositories.

Til arbejde, kommandolinjeværktøjet "sl" foreslås, som implementerer typiske koncepter, arbejdsgange og en grænseflade, der er kendt for udviklere, der er fortrolige med Git og Mercurial. Terminologien og kommandoerne i Sapling er lidt anderledes end Git og tættere på Mercurial.

Blandt de ekstra funktioner af Sapling, fremhæver understøttelse af "smart registrering" (smartlog), som giver dig mulighed for visuelt at vurdere status for dit lager, fremhæve de vigtigste oplysninger og filtrere mindre detaljer fra. For eksempel, når du kører sl-værktøjet uden argumenter, vises kun dine egne lokale ændringer (fremmede er skjult), status for eksterne filialer, ændrede filer og nye versioner af commits vises. Derudover er der en interaktiv webgrænseflade til hurtig navigation gennem den smarte log, ændringstræ og commits.

En anden bemærkelsesværdig forbedring i Sapling er det det gør processen med at rette og analysere fejl og vende tilbage til en tidligere tilstand meget nemmere. For eksempel foreslås kommandoerne "sl fortryd", "sl redo", "sl uncommit" og "sl unmend" til at vende mange operationer, "sl hide" og "sl unhide" til midlertidigt at skjule commits og til interaktiv navigation. stater, Sapling understøtter også konceptet med en commit stack, som giver dig mulighed for at organisere en gennemgang trin for trin ved at nedbryde kompleks funktionalitet i et mindre, mere forståeligt trinvis sæt ændringer (fra en grundlæggende ramme til en endelig funktion).

Separat, en serverdel blev udviklet til effektivt fjernarbejde med repositories og et virtuelt filsystem til at arbejde med en lokal del af en del af lageret, som om det var et komplet lager (udvikleren ser hele lageret, men kun de anmodede data kopieres til det lokale system, som er tilgået).

Koden til disse komponenter brugt i Facebooks infrastruktur er ikke åben endnu, men virksomheden har lovet at frigive den i fremtiden. Mononoke-serveren (i Rust) og VFS EdenFS (i C++) prototyper kan dog allerede findes i Sapling-depotet. Disse komponenter er valgfrie, og Sapling-klienten er nok at arbejde med, som understøtter kloning af Git-lagre, interaktion med Git LFS-baserede servere og arbejde med git-værter som GitHub.

Der er udarbejdet flere plugins til Sapling, herunder ReviewStack-grænsefladen til gennemgang af ændringer (kode under GPLv2), som giver dig mulighed for at behandle pull-anmodninger på GitHub og bruge en change stack-visning.

Hvis du er interesseret i at vide mere om det, kan du konsultere detaljerne I det følgende link.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.