Sapling, systém riadenia zdrojového kódu kompatibilný s Git

stromček

Sapling zdôrazňuje jednoduchosť použitia pri škálovaní na najväčšie svetové úložiská.

Facebook predstavený prostredníctvom blogového príspevku systém správy zdrojového kódu stromček využívané pri vývoji interných projektov spoločnosti. Systém má za cieľ poskytnúť rozhranie na správu verzií známe, ktoré sa môžu rozšíriť na veľmi veľké úložiská zahŕňajúce desiatky miliónov súborov, potvrdení a vetiev.

Hlavnou myšlienkou systému je, že interakciou so špeciálnou časťou servera, ktorá poskytuje úložisko, všetky operácie sa škálujú na základe počtu súborov skutočne používané v kóde, na ktorom vývojár pracuje, a nie sú závislé od celkovej veľkosti celého úložiska.

Vývojár môže napríklad použiť iba malú časť kódu z veľmi veľkého úložiska a do jeho systému sa prenesie iba táto malá časť a nie celé úložisko. Pracovný adresár sa napĺňa dynamicky, pretože sa pristupuje k súborom úložiska, čo vám na jednej strane umožňuje výrazne urýchliť prácu s vašou časťou kódu, no na druhej strane ju spomaľuje, keď k nej pristupujete prvýkrát k novým súborom a vyžaduje neustály prístup k sieti (poskytovaný samostatne a režim prípravy offline-commit).

Okrem adaptívneho načítania dát, Sapling tiež implementuje optimalizácie zamerané na zníženie informačnej záťaže s históriou zmien. (napríklad 3/4 údajov v úložisku s jadrom Linuxu tvorí história zmien).

Na efektívnu prácu s históriou zmien sú údaje, ktoré sú s ňou spojené, uložené v segmentovanom zobrazení, čo vám umožňuje stiahnuť si zo servera samostatné časti grafu odovzdania. Klient môže požiadať server o informácie o vzťahu viacerých potvrdení a stiahnuť si len potrebnú časť grafu.

Projekt bol vo vývoji posledných 10 rokov a bol vytvorený na riešenie problémov pri prístupe k veľmi veľkým monolitickým repozitárom s hlavnou vetvou, kde sa praktizovala prax používania operácie „rebase“ namiesto „zlúčenia“.

V tom čase neexistovali žiadne otvorené riešenia pre prácu s takýmito repozitármi a inžinieri Facebooku sa rozhodli vytvoriť nový systém správy verzií, ktorý by vyhovoval potrebám spoločnosti, a nie rozdeľovať projekty do malých úložísk, čo by viedlo k zložitejšej správe závislostí ( naraz na vyriešenie podobného problému spoločnosť Microsoft vytvorila vrstvu GVFS).

Spočiatku Facebook používal systém Mercurial a projekt Sapling bol pôvodne vyvinutý ako doplnok k Mercurial. Postupom času sa zo systému stal samostatný projekt s vlastným protokolom, formátom úložiska a algoritmami, ktorý bol rozšírený aj o možnosť interakcie s úložiskami Git.

Pre prácu, navrhuje sa nástroj príkazového riadka "sl", ktorý implementuje typické koncepty, pracovné postupy a rozhranie známe vývojárom, ktorí poznajú Git a Mercurial. Terminológia a príkazy v Sapling sú mierne odlišné od Gitu a bližšie k Mercurialu.

Medzi ďalšie funkcie z Sapling, zdôrazňuje podpora „inteligentnej registrácie“ (smartlog), ktorý vám umožňuje vizuálne posúdiť stav vášho úložiska, zvýraznite najdôležitejšie informácie a odfiltrujte drobné detaily. Napríklad, keď spustíte obslužný program sl bez argumentov, zobrazia sa iba vaše vlastné lokálne zmeny (cudzie sú zbalené), zobrazí sa stav externých vetiev, zmenené súbory a nové verzie potvrdení. Okrem toho je k dispozícii interaktívne webové rozhranie na rýchlu navigáciu cez inteligentný protokol, strom zmien a potvrdenia.

Ďalším významným zlepšením v Sapling je to značne zjednodušuje proces opravy a analýzy chýb a návrat do predchádzajúceho stavu. Napríklad príkazy "sl undo", "sl redo", "sl uncommit" a "sl unmend" sú navrhnuté na zrušenie mnohých operácií, "sl hide" a "sl unhide" na dočasné skrytie odovzdania a na interaktívnu navigáciu. state Sapling podporuje aj koncept zásobníka odovzdania, ktorý vám umožňuje organizovať prehľad krok za krokom rozdelením komplexnej funkčnosti na menšiu, zrozumiteľnejšiu inkrementálnu sadu zmien (od základného rámca po konečnú funkciu).

Oddelene, bola vyvinutá serverová časť pre efektívnu vzdialenú prácu s repozitármi a virtuálny súborový systém na prácu s lokálnou časťou časti úložiska, ako keby to bol kompletný úložisko (vývojár vidí celé úložisko, ale do lokálneho systému, ku ktorému sa pristupuje), sa skopírujú iba požadované údaje.

Kód pre tieto komponenty používané v infraštruktúre Facebooku ešte nie je otvorený, no spoločnosť prisľúbila, že ho v budúcnosti zverejní. Prototypy servera Mononoke (v jazyku Rust) a VFS EdenFS (v jazyku C++) už možno nájsť v repozitári Sapling. Tieto komponenty sú voliteľné a na prácu stačí klient Sapling, ktorý podporuje klonovanie repozitárov Git, interakciu so servermi založenými na Git LFS a prácu s hostiteľmi git, ako je GitHub.

Pre Sapling je pripravených niekoľko pluginov, vrátane rozhrania ReviewStack na kontrolu zmien (kód pod GPLv2), ktoré vám umožňuje spracovávať požiadavky na stiahnutie na GitHub a používať zobrazenie zásobníka zmien.

Ak máte záujem dozvedieť sa o ňom viac, môžete si prekonzultovať podrobnosti Na nasledujúcom odkaze.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.