Facebook kynnti nýtt frumkóðastjórnunarkerfi Sapling

Facebook (bannað í Rússlandi) hefur gefið út Sapling, hugbúnaðarstýringarkerfi sem notað er við innri verkefnaþróun. Kerfið miðar að því að bjóða upp á kunnuglegt útgáfustýringarviðmót sem getur aukið umfang útgáfugagna sem spanna tugi milljóna skráa, commits og branches. Viðskiptavinakóðinn er skrifaður í Python og Rust og er opinn hugbúnaður undir GPLv2 leyfinu.

Sérstakur netþjónsþáttur hefur verið þróaður fyrir skilvirka fjarvinnu með gagnageymslum og sýndarskráarkerfi til að vinna með staðbundinn hluta af gagnageymslu eins og um heila gagnageymslu væri að ræða (forritarinn sér allt gagnageymsluna en aðeins umbeðin gögn eru afrituð í staðbundna kerfið). Kóðinn fyrir þessa íhluti sem notaðir eru í innviðum Facebook er ekki enn opinn hugbúnaður, en fyrirtækið hefur lofað að gefa hann út í framtíðinni. Hins vegar er þegar hægt að finna frumgerðir í Sapling-gagnageymslunni. miðlara Mononoke (skrifað í Rust) og VFS EdenFS (skrifað í C++). Þessir íhlutir eru valfrjálsir, og Sapling biðlarinn, sem styður klónun Git geymslu og samskipti við netþjónar byggt á Git LFS og vinnur með git hýsingarþjónustum eins og GitHub.

Grunnhugmyndin á bak við kerfið er sú að þegar samskipti eru við sérstakan netþjón sem geymir gagnageymsluna, þá aðlagast allar aðgerðir miðað við fjölda skráa sem í raun eru notaðar í kóðanum sem forritarinn vinnur að, óháð heildarstærð alls gagnageymslunnar. Til dæmis gæti forritari aðeins notað lítinn hluta af kóða úr mjög stóru gagnageymslu og aðeins þessi litli hluti, frekar en allt gagnageymsluna, verður fluttur yfir í kerfið. Vinnumöppan er fyllt út á kraftmikinn hátt þegar aðgangur er að skrám úr gagnageymslunni. Þetta, þó að það flýti verulega fyrir vinnu með kóða forritarans, leiðir einnig til hægagangar þegar nýir skrár eru opnaðar í fyrsta skipti og krefst stöðugs aðgangs að netkerfinu (ótengdur staðfestingarhamur er einnig í boði).

Auk aðlögunarhæfrar gagnahleðslu innleiðir Sapling einnig hagræðingar sem miða að því að draga úr hleðslu upplýsinga úr breytingasögu (til dæmis eru þrír fjórðu hlutar gagnanna í kjarnageymslu Linux skráðir í breytingasögu). Til að vinna með breytingasögu á skilvirkan hátt eru tengd gögn geymd í sundurliðaðri framsetningu, sem gerir kleift að hlaða niður einstökum hlutum af commit-grafinu af þjóninum. Viðskiptavinur getur óskað eftir upplýsingum um tengsl milli margra commit-a frá þjóninum og aðeins hlaðið niður þeim hluta grafsins sem þarf.

Verkefnið hefur verið í þróun síðustu 10 ár og var búið til til að takast á við áskoranirnar við að skipuleggja aðgang að mjög stórum, einhliða gagnageymslum með einni aðalgrein, sem yfirleitt byggði á „endurbyggingu“ frekar en „sameiningu“. Á þeim tíma vantaði opnar lausnir til að vinna með slíkar gagnageymslur og verkfræðingar Facebook ákváðu að búa til nýtt útgáfustýringarkerfi sem myndi uppfylla þarfir fyrirtækisins frekar en að skipta verkefnum í minni gagnageymslur, sem hefði flókna stjórnun á ósjálfstæði (Microsoft hafði áður búið til GVFS lagið til að takast á við svipað vandamál). Í upphafi notaði Facebook Mercurial og Sapling verkefnið þróaðist upphaflega sem viðbót við Mercurial. Með tímanum þróaðist kerfið í sjálfstætt verkefni með eigin samskiptareglum, geymslusniði og reikniritum, sem einnig var stækkað til að styðja samskipti við Git gagnageymslur.

Skipanalínuforritið „sl“ er ætlað fyrir vinnu, til að útfæra dæmigerð hugtök, vinnuflæði og viðmót sem forritarar sem þekkja Git og Mercurial þekkja. Hugtökin og skipanirnar í Sapling eru örlítið frábrugðnar Git og eru nær Mercurial. Til dæmis eru „bookmarks“ notuð í stað greina (nefndar greinar eru ekki studdar); sjálfgefið er að þegar klónun/pull er keyrð er aðeins aðalgreinin sótt, ekki allt geymslusvæðið; engin formerking er á commits (uppsetningarsvæði); skipunin „sl pull“ er notuð í stað „git fetch“, „sl pull --rebase“ í stað „git pull“, „sl goto COMMIT“ í stað „git checkout COMMIT“, „sl journal“ í stað „git reflog“, „sl revert FILE“ er notuð til að afturkalla breytingu og „HEAD“ er notað til að bera kennsl á „.“ En almennt séð eru almennu hugtökin um greinar og klónun/pull/push/commit/rebase aðgerðir þau sömu.

Meðal viðbótareiginleika Sapling verkfærakistans sker sig úr með stuðningi við snjallskrár (snjalllogg). Hann gerir þér kleift að meta stöðu gagnageymslunnar sjónrænt, auðkenna mikilvægustu upplýsingarnar og sía út óviðkomandi smáatriði. Til dæmis, þegar sl gagnsemin er keyrð án viðfanga, eru aðeins þínar eigin staðbundnu breytingar birtar (aðrar breytingar eru dregnar saman) og staða ytri greinar, breyttra skráa og nýrra útgáfu af skuldbindingum (commit). Einnig er í boði gagnvirkt vefviðmót sem gerir þér kleift að fletta fljótt í gegnum snjallskrána, breyta tréð og skuldbindingar.

 Facebook kynnti nýtt frumkóðastjórnunarkerfi Sapling

Önnur athyglisverð framför í Sapling er einföldun á að laga og endurskoða villur, sem og að snúa aftur til fyrri ástands. Til dæmis eru skipanirnar "sl undo", "sl redo", "sl uncommit" og "sl unamend" tiltækar til að afturkalla margar aðgerðir; "sl hide" og "sl unhide" eru tiltækar til að fela tímabundið commits; og "sl undo -i command" er tiltæk til að vafra gagnvirkt um fyrri ástand og snúa aftur til ákveðins punkts. Sapling styður einnig hugmyndina um commit stafla, sem gerir kleift að endurskoða skref fyrir skref með því að brjóta niður flókna virkni í safn af minni, meðfærilegri stigvaxandi breytingum (frá grunngrind til fullunninna eiginleika).

Nokkrar viðbætur hafa verið þróaðar fyrir Sapling, þar á meðal ReviewStack breytingarviðmótið (kóði undir GPLv2), sem gerir kleift að meðhöndla pull requests á GitHub og nota stafla-byggða sýn á breytingar. Viðbætur fyrir samþættingu við VSCode og TextMate ritstjóra hafa einnig verið gefnar út, sem og útfærsla á ISL (Interactive SmartLog) viðmótinu og netþjóninum.

Heimild: opennet.ru