Facebook yazindua mfumo mpya wa kudhibiti chanzo cha Sapling

Facebook (iliyopigwa marufuku katika Shirikisho la Urusi) ilichapisha mfumo wa udhibiti wa chanzo cha Sapling, unaotumiwa katika maendeleo ya miradi ya ndani ya kampuni. Mfumo huu unalenga kutoa kiolesura cha udhibiti cha toleo kinachojulikana ambacho kinaweza kufikia hazina kubwa sana zinazochukua mamilioni ya faili, ahadi na matawi. Nambari ya mteja imeandikwa kwa Python na Rust, na imefunguliwa chini ya leseni ya GPLv2.

Sehemu ya seva imeundwa kando kwa ajili ya kazi bora ya kijijini na hazina na mfumo wa faili wa kawaida wa kufanya kazi na kipande cha ndani cha sehemu ya hazina kama hazina kamili (msanidi huona hazina nzima, lakini ni data inayohitajika tu inayopatikana. inakiliwa kwa mfumo wa ndani). Msimbo wa vipengele hivi vinavyotumika katika miundombinu ya Facebook bado haujafunguliwa, lakini kampuni imeahidi kuichapisha katika siku zijazo. Walakini, kwa sasa kwenye hazina ya Sapling tayari unaweza kupata prototypes za seva ya Mononoke (katika Rust) na VFS EdenFS (katika C++). Vipengee hivi ni vya hiari na mteja wa Sapling inatosha kufanya kazi, ambayo inasaidia uundaji wa hazina za Git, kuingiliana na seva kulingana na Git LFS na kufanya kazi na tovuti za kupangisha git kama vile GitHub.

Wazo kuu la mfumo ni kwamba wakati wa kuingiliana na sehemu maalum ya seva ambayo hutoa uhifadhi wa hazina, shughuli zote hupunguzwa kulingana na idadi ya faili zinazotumiwa katika msimbo ambao msanidi anafanya kazi, na hazitegemei. saizi ya jumla ya hazina nzima. Kwa mfano, msanidi programu anaweza kutumia sehemu ndogo tu ya msimbo kutoka kwa hazina kubwa sana na ni sehemu hiyo ndogo tu itahamishiwa kwenye mfumo wake, si hazina nzima. Saraka ya kufanya kazi imejazwa kwa nguvu kama faili kutoka kwa hazina zinapatikana, ambayo, kwa upande mmoja, hukuruhusu kuharakisha kazi na sehemu yako ya nambari, lakini kwa upande mwingine husababisha kushuka wakati wa kupata faili mpya za faili. mara ya kwanza na inahitaji ufikiaji wa mara kwa mara kwa mtandao (modi iliyotolewa kando na nje ya mkondo kwa kuandaa ahadi).

Mbali na upakiaji wa data inayoweza kubadilika, Sapling pia hutumia uboreshaji unaolenga kupunguza upakiaji wa habari na historia ya mabadiliko (kwa mfano, 3/4 ya data kwenye hazina iliyo na kerneli ya Linux ndio historia ya mabadiliko). Ili kufanya kazi kwa ufanisi na historia ya mabadiliko, data inayohusishwa nayo huhifadhiwa katika uwakilishi uliogawanywa ambao hukuruhusu kupakua sehemu mahususi za grafu ya ahadi kutoka kwa seva. Mteja anaweza kuomba taarifa kutoka kwa seva kuhusu uhusiano kati ya ahadi kadhaa na kupakua tu sehemu muhimu ya grafu.

Mradi huo umekuwa ukiendelezwa zaidi ya miaka 10 iliyopita na iliundwa ili kutatua matatizo wakati wa kuandaa upatikanaji wa hifadhi kubwa sana za monolithic na tawi moja kuu, ambalo lilitumia operesheni ya "rebase" badala ya "kuunganisha". Wakati huo, hakukuwa na suluhisho wazi za kufanya kazi na hazina kama hizo, na wahandisi wa Facebook waliamua kuunda mfumo mpya wa kudhibiti toleo ambao ungekidhi mahitaji ya kampuni, badala ya kugawa miradi kuwa hazina ndogo, ambayo ingesababisha ugumu wa. usimamizi wa utegemezi (wakati mmoja, kutatua tatizo sawa, Microsoft iliunda safu ya GVFS). Hapo awali, Facebook ilitumia mfumo wa Mercurial na mradi wa Sapling katika hatua ya kwanza iliyokuzwa kama nyongeza ya Mercurial. Baada ya muda, mfumo ulibadilika kuwa mradi wa kujitegemea na itifaki yake, muundo wa uhifadhi na algorithms, ambayo pia ilipanuliwa na uwezo wa kuingiliana na hazina za Git.

Kwa kazi, matumizi ya mstari wa amri "sl" hutolewa, ambayo hutumia dhana za kawaida, mtiririko wa kazi na kiolesura kinachojulikana kwa watengenezaji wanaofahamu Git na Mercurial. Istilahi na amri katika Sapling ni tofauti kidogo na Git na ziko karibu na Mercurial. Kwa mfano, badala ya matawi, "alamisho" hutumiwa (matawi yaliyotajwa hayatumiki), kwa msingi, wakati wa kutekeleza clone / kuvuta, sio hazina nzima iliyopakiwa, lakini tawi kuu tu, hakuna alama ya awali ya ahadi ( eneo la jukwaa), badala ya "git fetch" amri ya "sl" inatumika kuvuta", badala ya "git pull" - "sl pull -rebase", badala ya "git checkout COMMIT" - "sl goto COMMIT", badala ya "git reflog" - "sl journal", kughairi mabadiliko badala ya "git checkout - FILE" "sl revert FILE" imebainishwa, na "." inatumika kutambua tawi la "HEAD". Lakini kwa ujumla, dhana za jumla za matawi na shughuli za clone/vuta/push/commit/rebase zimehifadhiwa.

Miongoni mwa vipengele vya ziada vya zana ya Sapling, usaidizi wa "smartlog" unasimama, ambayo inakuwezesha kutathmini hali ya hazina yako, kuonyesha habari muhimu zaidi na kuchuja maelezo yasiyo muhimu. Kwa mfano, unapoendesha matumizi ya sl bila hoja, mabadiliko yako ya ndani pekee yanaonyeshwa kwenye skrini (nyingine hupunguzwa), hali ya matawi ya nje, faili zilizobadilishwa na matoleo mapya ya ahadi yanaonyeshwa. Zaidi ya hayo, kiolesura cha maingiliano cha wavuti kinatolewa, ambacho kinawezesha kuvinjari kwa haraka kupitia logi mahiri, kubadilisha mti na kujitolea.

Facebook yazindua mfumo mpya wa kudhibiti chanzo cha Sapling

Uboreshaji mwingine unaojulikana katika Sapling ni kwamba hurahisisha kurekebisha na kutatua makosa na kurejesha hali ya awali. Kwa mfano, amri "sl undo", "sl redo", "sl uncommit" na "sl unamend" hutolewa ili kurudisha nyuma shughuli nyingi; amri "sl hide" na "sl unhide" hutumiwa kuficha ahadi kwa muda; na kwa usogezaji mwingiliano kupitia majimbo ya zamani na kurudi kwenye sehemu iliyobainishwa kwa amri "sl tengua -i amri". Miche pia inasaidia dhana ya mkusanyiko wa ahadi, ambayo hukuruhusu kupanga hakiki za hatua kwa hatua kwa kuvunja utendakazi mgumu katika seti ya mabadiliko madogo, yanayoeleweka zaidi ya nyongeza (kutoka kwa mfumo wa msingi hadi kazi iliyokamilishwa).

Nyongeza kadhaa zimetayarishwa kwa ajili ya Upandaji miti, ikiwa ni pamoja na kiolesura cha ReviewStack cha kukagua mabadiliko (msimbo chini ya GPLv2), ambayo hukuruhusu kushughulikia maombi ya kuvuta kwenye GitHub na kutumia mwonekano wa mabadiliko. Kwa kuongeza, nyongeza zimechapishwa kwa kuunganishwa na wahariri wa VSCode na TextMate, pamoja na utekelezaji wa interface ya ISL (Interactive SmartLog) na seva.

Chanzo: opennet.ru

Kuongeza maoni