Facebook ṣafihan eto iṣakoso koodu orisun tuntun kan Sapling

Facebook (fi ofin de ni Russian Federation) ṣe atẹjade eto iṣakoso orisun Sapling, ti a lo ninu idagbasoke awọn iṣẹ ile-iṣẹ inu. Eto naa ni ero lati pese wiwo iṣakoso ẹya ti o faramọ ti o le ṣe iwọn fun awọn ibi ipamọ ti o tobi pupọ ti o ni awọn mewa ti awọn miliọnu awọn faili, awọn adehun ati awọn ẹka. Koodu onibara ti kọ ni Python ati Rust, ati pe o ṣii labẹ iwe-aṣẹ GPLv2.

Apakan olupin ti ni idagbasoke lọtọ fun iṣẹ isakoṣo latọna jijin daradara pẹlu awọn ibi ipamọ ati eto faili foju kan fun ṣiṣẹ pẹlu bibẹ pẹlẹbẹ agbegbe ti apakan ibi ipamọ bi ibi ipamọ pipe (olugbese naa rii gbogbo ibi ipamọ, ṣugbọn data ti o nilo nikan ti o wọle si ti daakọ si eto agbegbe). Awọn koodu fun awọn irinše wọnyi ti a lo ninu awọn amayederun Facebook ko ti ṣii, ṣugbọn ile-iṣẹ ti ṣe ileri lati gbejade ni ojo iwaju. Sibẹsibẹ, lọwọlọwọ ni ibi ipamọ Sapling o ti le rii awọn apẹẹrẹ ti olupin Mononoke (ni Rust) ati VFS EdenFS (ni C ++). Awọn paati wọnyi jẹ iyan ati alabara Sapling ti to lati ṣiṣẹ, eyiti o ṣe atilẹyin awọn ibi ipamọ Git cloning, ibaraenisepo pẹlu awọn olupin ti o da lori Git LFS ati ṣiṣẹ pẹlu awọn aaye alejo gbigba git bii GitHub.

Ero akọkọ ti eto naa ni pe nigba ibaraenisepo pẹlu apakan olupin pataki kan ti o pese ibi ipamọ ti ibi ipamọ, gbogbo awọn iṣẹ jẹ iwọn da lori nọmba awọn faili ti o lo ni otitọ koodu ti olupilẹṣẹ n ṣiṣẹ lori, ati pe ko dale lori. lapapọ iwọn ti gbogbo ibi ipamọ. Fun apẹẹrẹ, olupilẹṣẹ kan le lo nikan ipin kekere ti koodu lati ibi ipamọ ti o tobi pupọ ati pe apakan kekere yẹn nikan ni yoo lọ si eto rẹ, kii ṣe gbogbo ibi ipamọ. Liana iṣẹ ti kun ni agbara bi awọn faili lati ibi ipamọ ti wọle, eyiti, ni apa kan, gba ọ laaye lati mu iyara ṣiṣẹ pọ si pẹlu apakan koodu rẹ, ṣugbọn ni apa keji o yori si idinku nigbati o wọle si awọn faili tuntun fun igba akọkọ ati nilo iraye si igbagbogbo si nẹtiwọọki (ti a pese ni lọtọ ati ipo aisinipo fun ṣiṣe awọn adehun).

Ni afikun si ikojọpọ data adaṣe, Sapling tun ṣe awọn iṣapeye ti o pinnu lati dinku ikojọpọ alaye pẹlu itan-akọọlẹ awọn ayipada (fun apẹẹrẹ, 3/4 ti data ni ibi ipamọ pẹlu ekuro Linux jẹ itan-akọọlẹ awọn ayipada). Lati ṣiṣẹ ni imunadoko pẹlu itan-akọọlẹ awọn ayipada, data ti o ni nkan ṣe pẹlu rẹ ti wa ni ipamọ ni aṣoju apakan ti o fun ọ laaye lati ṣe igbasilẹ awọn ẹya ara ẹni kọọkan ti iyaya ifaramọ lati olupin naa. Onibara le beere alaye lati ọdọ olupin nipa ibatan laarin awọn iṣẹ ṣiṣe pupọ ati ṣe igbasilẹ apakan pataki ti iyaya naa.

Ise agbese na ti ni idagbasoke ni awọn ọdun 10 sẹhin ati pe a ṣẹda lati yanju awọn iṣoro nigbati o ba ṣeto iraye si awọn ibi ipamọ monolithic ti o tobi pupọ pẹlu ẹka oluwa kan, eyiti o lo iṣẹ "rebase" dipo "ijọpọ". Ni akoko yẹn, ko si awọn solusan ṣiṣi fun ṣiṣẹ pẹlu iru awọn ibi ipamọ, ati awọn onimọ-ẹrọ Facebook pinnu lati ṣẹda eto iṣakoso ẹya tuntun ti yoo pade awọn iwulo ile-iṣẹ naa, dipo pipin awọn iṣẹ akanṣe sinu awọn ibi ipamọ kekere, eyiti yoo yorisi idiju ti iṣakoso igbẹkẹle (ni akoko kan, lati yanju iṣoro ti o jọra, Microsoft ṣẹda Layer GVFS). Ni ibẹrẹ, Facebook lo eto Mercurial ati iṣẹ Sapling ni ipele akọkọ ti o ni idagbasoke bi afikun si Mercurial. Ni akoko pupọ, eto naa yipada si iṣẹ akanṣe ominira pẹlu ilana tirẹ, ọna kika ibi ipamọ ati awọn algoridimu, eyiti o tun pọ si pẹlu agbara lati ṣe ajọṣepọ pẹlu awọn ibi ipamọ Git.

IwUlO laini aṣẹ “sl” ni a funni fun iṣẹ, imuse awọn imọran aṣoju, ṣiṣan iṣẹ ati wiwo ti o faramọ si awọn olupilẹṣẹ faramọ Git ati Mercurial. Awọn ọrọ-ọrọ ati awọn aṣẹ ni Sapling yatọ diẹ si Git ati pe o sunmọ Mercurial. Fun apẹẹrẹ, dipo awọn ẹka, “awọn bukumaaki” ni a lo (awọn ẹka ti a npè ni ko ṣe atilẹyin), nipasẹ aiyipada, nigba ṣiṣe oniye / fa, kii ṣe gbogbo ibi ipamọ ti wa ni igbasilẹ, ṣugbọn ẹka akọkọ nikan, ko si aami alakoko ti awọn iṣẹ ( agbegbe idasile), dipo “git fetch” pipaṣẹ “sl” ni a lo fa”, dipo “git pull” - “sl pull -rebase”, dipo “git checkout COMMIT” - “sl goto COMMIT”, dipo "git reflog" - "sl journal", lati fagilee iyipada dipo "git checkout - FILE" "sl revert FILE" ti wa ni pato, ati "" ni a lo lati ṣe idanimọ ẹka "HEAD". Ṣugbọn ni gbogbogbo, awọn imọran gbogbogbo ti awọn ẹka ati ẹda oniye / fa / titari / ifaramọ / awọn iṣẹ atunbere ti wa ni ipamọ.

Lara awọn ẹya afikun ti ohun elo irinṣẹ Sapling, atilẹyin fun "smartlog" duro jade, eyiti o fun ọ laaye lati ṣe ayẹwo oju-ara ipo ti ibi-ipamọ rẹ, ṣe afihan alaye ti o ṣe pataki julọ ati ki o ṣawari awọn alaye ti ko ṣe pataki. Fun apẹẹrẹ, nigbati o ba ṣiṣẹ ohun elo sl laisi awọn ariyanjiyan, awọn ayipada agbegbe ti ara rẹ nikan ni a fihan loju iboju (awọn miiran ti dinku), ipo ti awọn ẹka ita, awọn faili ti o yipada ati awọn ẹya tuntun ti awọn adehun yoo han. Ni afikun, a funni ni wiwo oju opo wẹẹbu ibaraenisepo, eyiti o jẹ ki o ṣee ṣe lati ni iyara lilö kiri nipasẹ log smart, yi igi pada ati ṣe.

Facebook ṣafihan eto iṣakoso koodu orisun tuntun kan Sapling

Ilọsiwaju pataki miiran ni Sapling ni pe o jẹ ki o rọrun lati ṣatunṣe ati yanju awọn aṣiṣe ati pada si ipo iṣaaju. Fun apẹẹrẹ, awọn aṣẹ “sl undo”, “sl redo”, “sl uncommit” ati “sl unanamend” ni a funni lati yipo ọpọlọpọ awọn iṣẹ ṣiṣe pada; ati fun lilọ kiri ibanisọrọ nipasẹ awọn ipinlẹ atijọ ati pada si aaye pàtó kan pẹlu aṣẹ “sl undo -i Command”. Sapling tun ṣe atilẹyin imọran ti akopọ ifarabalẹ, eyiti o fun ọ laaye lati ṣeto awọn atunyẹwo igbese-nipasẹ-igbesẹ nipasẹ fifọ iṣẹ ṣiṣe eka sinu ṣeto ti o kere, awọn iyipada afikun oye diẹ sii (lati ilana ipilẹ si iṣẹ ti pari).

Ọpọlọpọ awọn afikun ni a ti pese sile fun Sapling, pẹlu wiwo ReviewStack fun atunwo awọn ayipada (koodu labẹ GPLv2), eyiti o fun ọ laaye lati ṣe ilana awọn ibeere fifa lori GitHub ati lo wiwo akopọ ti awọn ayipada. Ni afikun, awọn afikun ti ṣe atẹjade fun iṣọpọ pẹlu VSCode ati awọn olootu TextMate, bakanna bi imuse ti wiwo ISL (Interactive SmartLog) ati olupin.

orisun: opennet.ru

Fi ọrọìwòye kun