Sapling, systém kontroly zdrojového kódu kompatibilní s Git

stromeček

Sapling klade důraz na snadné použití při škálování na největší světové repozitáře.

Facebook odhalen prostřednictvím blogového příspěvku systém správy zdrojového kódu Stromeček používá při vývoji interních projektů společnosti. Systém si klade za cíl poskytnout rozhraní pro správu verzí známé, které lze škálovat do velmi velkých úložišť zahrnujících desítky milionů souborů, potvrzení a větví.

Hlavní myšlenkou systému je, že interakcí se speciální částí serveru, která poskytuje úložiště úložiště, všechny operace se škálují na základě počtu souborů skutečně používané v kódu, na kterém vývojář pracuje, a nejsou závislé na celkové velikosti celého úložiště.

Vývojář může například použít pouze malou část kódu z velmi velkého úložiště a do jeho systému bude přenesena pouze tato malá část, nikoli celé úložiště. Pracovní adresář se plní dynamicky, jak se přistupuje k souborům úložiště, což na jednu stranu umožňuje výrazně urychlit práci s vaší částí kódu, na druhou stranu ji zpomalí, když k ní přistupujete poprvé k novým souborům a vyžaduje neustálý přístup k síti (poskytován samostatně a v režimu přípravy offline-commit).

Kromě adaptivního načítání dat, Sapling také implementuje optimalizace zaměřené na snížení informační zátěže s historií změn. (například 3/4 dat v úložišti s linuxovým jádrem tvoří historie změn).

Aby bylo možné efektivně pracovat s historií změn, data s ní spojená jsou uložena v segmentovaném zobrazení, což vám umožňuje stahovat samostatné části grafu odevzdání ze serveru. Klient může požádat server o informaci o vztahu několika potvrzení a stáhnout si pouze nezbytnou část grafu.

Projekt byl vyvíjen posledních 10 let a byl vytvořen pro řešení problémů při přístupu k velmi velkým monolitickým úložištím s hlavní větví, kde se praktikovala praxe použití operace „rebase“ místo „merge“.

V té době neexistovala žádná otevřená řešení pro práci s takovými repozitáři a inženýři Facebooku se rozhodli vytvořit nový systém správy verzí, který by vyhovoval potřebám společnosti, spíše než rozdělovat projekty do malých úložišť, což by vedlo ke komplikovanější správě závislostí ( najednou, aby vyřešil podobný problém, vytvořil Microsoft vrstvu GVFS).

Zpočátku Facebook používal systém Mercurial a projekt Sapling byl původně vyvinut jako doplněk k Mercurial. Postupem času se ze systému stal samostatný projekt s vlastním protokolem, formátem úložiště a algoritmy, který byl také rozšířen o možnost interakce s repozitáři Git.

Pro práci, je navržen nástroj příkazového řádku "sl", který implementuje typické koncepty, pracovní postupy a rozhraní známé vývojářům obeznámeným s Git a Mercurial. Terminologie a příkazy v Sapling se mírně liší od Gitu a blíže k Mercurialu.

Mezi doplňkové funkce stromu Sapling, zdůrazňuje podpora „chytré registrace“ (smartlog), který vám umožní vizuálně posoudit stav vašeho úložiště, zvýrazněte nejdůležitější informace a odfiltrujte drobné detaily. Když například spustíte obslužný program sl bez argumentů, zobrazí se pouze vaše vlastní lokální změny (cizí jsou sbaleny), zobrazí se stav externích větví, změněné soubory a nové verze odevzdání. Kromě toho je k dispozici interaktivní webové rozhraní pro rychlou navigaci v inteligentním protokolu, stromu změn a potvrzeních.

Dalším významným vylepšením Sapling je to značně usnadňuje proces opravy a analýzy chyb a návrat do předchozího stavu. Například příkazy "sl undo", "sl redo", "sl uncommit" a "sl unmend" jsou navrženy pro zrušení mnoha operací, "sl hide" a "sl unhide" pro dočasné skrytí odevzdání a pro interaktivní navigaci. state Sapling také podporuje koncept zásobníku odevzdání, který vám umožňuje organizovat recenzi krok za krokem rozdělením komplexní funkčnosti na menší, srozumitelnější inkrementální sadu změn (od základního rámce po konečnou funkci).

Odděleně, byla vyvinuta serverová část pro efektivní vzdálenou práci s repozitáři a virtuální souborový systém pro práci s lokální částí části úložiště, jako by se jednalo o úplné úložiště (vývojář vidí celé úložiště, ale pouze požadovaná data se zkopírují do místního systému, ke kterému se přistupuje).

Kód pro tyto komponenty používané v infrastruktuře Facebooku zatím není otevřený, ale společnost slíbila, že jej v budoucnu uvolní. Prototypy serveru Mononoke (v Rustu) a VFS EdenFS (v C++) již lze nalézt v úložišti Sapling. Tyto komponenty jsou volitelné a pro práci stačí klient Sapling, který podporuje klonování úložišť Git, interakci se servery založenými na Git LFS a práci s hostiteli git, jako je GitHub.

Pro Sapling bylo připraveno několik pluginů, včetně rozhraní ReviewStack pro kontrolu změn (kód pod GPLv2), které umožňuje zpracovávat žádosti o stažení na GitHubu a používat zobrazení zásobníku změn.

Máte-li zájem dozvědět se o něm více, můžete si prokonzultovat podrobnosti Na následujícím odkazu.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.