Sapling, sistem za nadzor izvorne kode, združljiv z Git

drobljenje

Sapling poudarja enostavnost uporabe, hkrati pa se prilagaja največjim repozitorijem na svetu.

Facebook predstavljen prek objave v spletnem dnevniku sistem za upravljanje izvorne kode Sadike uporablja pri razvoju notranjih projektov podjetja. Sistem želi zagotoviti vmesnik za nadzor različic poznan, ki se lahko razširi na zelo velika skladišča, ki obsegajo več deset milijonov datotek, potrditev in vej.

Glavna ideja sistema je, da z interakcijo s posebnim delom strežnika, ki zagotavlja shranjevanje repozitorija, vse operacije se merijo glede na število datotek dejansko uporabljeni v kodi, na kateri dela razvijalec, in niso odvisni od skupne velikosti celotnega repozitorija.

Na primer, razvijalec lahko uporabi le majhen del kode iz zelo velikega repozitorija in samo ta majhen del, in ne celotno repozitorij, bo prenesen v njihov sistem. Delovni imenik se polni dinamično, saj se dostopa do datotek repozitorija, kar vam po eni strani omogoča bistveno pospešitev dela s svojim delom kode, po drugi strani pa ga upočasni pri dostopu do nje za prvič do novih datotek in zahteva stalen dostop do omrežja (na voljo ločeno in način priprave za potrditev brez povezave).

Poleg prilagodljivega nalaganja podatkov, Sapling izvaja tudi optimizacije, katerih cilj je zmanjšati informacijsko obremenitev z zgodovino sprememb. (na primer, 3/4 podatkov v repozitoriju z jedrom Linux je zgodovina sprememb).

Za učinkovito delo z zgodovino sprememb so podatki, povezani z njo, shranjeni v segmentiranem pogledu, ki vam omogoča prenos ločenih delov grafa potrditve s strežnika. Odjemalec lahko zahteva od strežnika informacije o razmerju več potrditev in prenese le potreben del grafa.

Projekt je nastajal zadnjih 10 let in je bil ustvarjen za reševanje težav pri dostopu do zelo velikih monolitnih repozitorijev z glavno vejo, kjer se je izvajala praksa uporabe operacije "rebase" namesto "merge".

Takrat še ni bilo odprtih rešitev za delo s takšnimi repozitoriji in Facebookovi inženirji so se odločili ustvariti nov sistem za nadzor različic, ki bi ustrezal potrebam podjetja, namesto da bi projekte razdelili na majhne repozitorije, kar bi povzročilo bolj zapleteno upravljanje odvisnosti ( nekoč je Microsoft za rešitev podobne težave ustvaril sloj GVFS).

Sprva je Facebook uporabljal sistem Mercurial in projekt Sapling je bil prvotno razvit kot dodatek Mercurialu. Sčasoma je sistem postal samostojen projekt z lastnim protokolom, formatom shranjevanja in algoritmi, ki je bil prav tako razširjen z možnostjo interakcije z repozitoriji Git.

Za delo, predlagan je pripomoček ukazne vrstice "sl", ki izvaja tipične koncepte, poteke dela in vmesnik, poznan razvijalcem, ki poznajo Git in Mercurial. Terminologija in ukazi v Saplingu se nekoliko razlikujejo od Gita in so bližje Mercurialu.

Med dodatnimi funkcijami sadike, poudarja podpora za "pametno registracijo" (smartlog), ki vam omogoča vizualno oceno stanja vašega repozitorija, označite najpomembnejše informacije in filtrirajte manjše podrobnosti. Na primer, ko zaženete pripomoček sl brez argumentov, so prikazane samo vaše lokalne spremembe (tuje so strnjene), prikazani so status zunanjih vej, spremenjene datoteke in nove različice potrditev. Poleg tega je na voljo interaktivni spletni vmesnik za hitro navigacijo po pametnem dnevniku, drevesu sprememb in potrditvah.

Druga opazna izboljšava Saplinga je ta zelo olajša postopek popravljanja in analiziranja napak ter vračanja v prejšnje stanje. Na primer, ukazi "sl undo", "sl redo", "sl uncommit" in "sl unmend" so predlagani za razveljavitev številnih operacij, "sl hide" in "sl unhide" za začasno skrivanje potrditev in za interaktivno navigacijo. navaja, da Sapling podpira tudi koncept sklada za potrditev, ki vam omogoča, da organizirate pregled korak za korakom z razčlenitvijo kompleksne funkcionalnosti v manjši, bolj razumljivi inkrementalni nabor sprememb (od osnovnega ogrodja do končne funkcije).

Ločeno, za učinkovito oddaljeno delo z repozitoriji je bil razvit strežniški del in navidezni datotečni sistem za delo z lokalnim delom dela repozitorija, kot da bi bil celoten repozitorij (razvijalec vidi celotno repozitorij, vendar se samo zahtevani podatki prekopirajo v lokalni sistem, do katerega dostopa).

Koda za te komponente, ki se uporabljajo v Facebookovi infrastrukturi, še ni odprta, vendar je podjetje obljubilo, da jo bo objavilo v prihodnosti. Vendar je prototipa strežnika Mononoke (v Rustu) in VFS EdenFS (v C++) že mogoče najti v repozitoriju Sapling. Te komponente so neobvezne in odjemalec Sapling je dovolj za delo, ki podpira kloniranje Git repozitorijev, interakcijo s strežniki, ki temeljijo na Git LFS, in delo z gostitelji git, kot je GitHub.

Za Sapling je bilo pripravljenih več vtičnikov, vključno z vmesnikom ReviewStack za pregledovanje sprememb (koda pod GPLv2), ki vam omogoča obdelavo zahtev za vleko na GitHub in uporabo pogleda sklada sprememb.

Če vas zanima več o tem, si lahko ogledate podrobnosti V naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Za podatke odgovoren: Miguel Ángel Gatón
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.