I-Facebook ityhila inkqubo entsha yokulawula umthombo weSapling

I-Facebook (ivaliwe kwi-Russian Federation) yapapasha inkqubo yokulawula umthombo we-Sapling, esetyenziselwa ukuphuhliswa kweeprojekthi zenkampani zangaphakathi. Inkqubo ijolise ekunikezeni ujongano lolawulo loguqulelo oluqhelekileyo olunokulinganisa iindawo zokugcina ezinkulu ezithatha amashumi ezigidi zeefayile, ukuzinikela kunye namasebe. Ikhowudi yomxhasi ibhalwe kwiPython kunye neRust, kwaye ivuliwe phantsi kwelayisensi ye-GPLv2.

Inxalenye yomncedisi iphuhliswe ngokwahlukeneyo ngomsebenzi osebenzayo okude kunye nogcino kunye nenkqubo yefayile yenyani yokusebenza ngesilayi sendawo yendawo yokugcina njengovimba opheleleyo (umbhekisi phambili ubona yonke indawo yokugcina, kodwa kuphela idatha efunekayo efikelelwayo. ikhutshelwa kwisixokelelwano sasekhaya). Ikhowudi yala macandelo asetyenziswa kwisiseko se-Facebook ayikavulwa, kodwa inkampani ithembise ukuyipapasha kwixa elizayo. Nangona kunjalo, okwangoku kwiSapling repository unokufumana iprototypes yomncedisi weMononoke (kwiRust) kunye neVFS EdenFS (kwiC ++). Ezi zixhobo zinokuzikhethela kwaye umxhasi weSapling wanele ukuba asebenze, exhasa ukudibanisa i-Git yokugcina, isebenzisana nabancedisi basekwe kwiGit LFS kunye nokusebenza kunye ne-git hosting sites ezifana ne-GitHub.

Umbono ophambili wenkqubo kukuba xa usebenzisana nenxalenye yeseva ekhethekileyo ebonelela ngokugcinwa kwendawo yokugcina, yonke imisebenzi iyalinganiswa ngokuxhomekeke kwinani leefayile ezisetyenziswe ngokwenene kwikhowudi umphuhlisi asebenza kuyo, kwaye ayixhomekeke ubungakanani bubonke bendawo yokugcina. Ngokomzekelo, umphuhlisi unokusebenzisa inxalenye encinci yekhowudi kwindawo yokugcina enkulu kwaye kuphela loo nxalenye encinci iya kufuduselwa kwinkqubo yakhe, kungekhona indawo yokugcina. Uluhlu olusebenzayo luzaliswa ngamandla njengoko iifayile ezivela kwindawo yokugcina zifikelelwa, ezithi, kwelinye icala, zikuvumela ukuba ukhawulezise kakhulu umsebenzi ngenxalenye yakho yekhowudi, kodwa kwelinye icala kukhokelela ekunciphiseni xa ufikelela iifayile ezintsha ze. okokuqala kwaye ifuna ukufikelela rhoqo kuthungelwano (imo enikezelwe ngokwahlukileyo kunye ne-offline ukulungiselela ukuzinikela).

Ukongeza kwi-adapter data loading, i-Sapling iphinda isebenzise ukulungiswa okujoliswe ekunciphiseni ukulayishwa kolwazi kunye nembali yotshintsho (umzekelo, i-3/4 yedatha kwindawo yokugcina kunye ne-Linux kernel yimbali yotshintsho). Ukusebenza ngokukuko kunye nembali yotshintsho, idatha ehambelana nayo igcinwe kumboniso ocandiweyo okuvumela ukuba ukhuphele iindawo ezizimeleyo zegrafu yokuzinikela kumncedisi. Umxhasi unokucela ulwazi kumncedisi malunga nobudlelwane phakathi kwezinto ezininzi zokuzibophelela kunye nokukhuphela kuphela inxalenye efunekayo yegrafu.

Le projekthi iye yaphuhliswa kwiminyaka eyi-10 edlulileyo kwaye yadalwa ukuxazulula iingxaki xa iququzelela ukufikelela kwiindawo zokugcina ze-monolithic ezinkulu kakhulu kunye ne-master branch enye, esebenzisa umsebenzi "wokubuyisela" endaweni "yokudibanisa". Ngelo xesha, kwakungekho zisombululo ezivulekileyo zokusebenza kunye noovimba abanjalo, kwaye iinjineli ze-Facebook zagqiba ekubeni zenze inkqubo entsha yokulawula uguqulelo oluya kuhlangabezana neemfuno zenkampani, endaweni yokwahlula iiprojekthi zibe ziindawo ezincinci, eziza kukhokelela kubunzima benkampani. ulawulo lokuxhomekeka (ngexesha elinye, ukusombulula ingxaki efanayo, iMicrosoft yenza umaleko weGVFS). Ekuqaleni, i-Facebook yasebenzisa inkqubo yeMercurial kunye neprojekthi yeSapling kwinqanaba lokuqala eliphuhliswe njengelongezo kwi-Mercurial. Ngokuhamba kwexesha, inkqubo yaguqulwa yaba yiprojekthi ezimeleyo kunye neprotocol yayo, ifomathi yokugcina kunye ne-algorithms, eyaye yandiswa ngokukwazi ukusebenzisana neendawo zokugcina zeGit.

Ngomsebenzi, usetyenziso lomgca womyalelo "sl" lunikezelwa, olusebenzisa iikhonsepthi eziqhelekileyo, ukuhamba komsebenzi kunye nojongano oluqhelekileyo kubaphuhlisi abaqhelana neGit kunye neMercurial. Isigama kunye nemiyalelo kwiSapling yahluke kancinane kwiGit kwaye ikufutshane neMercurial. Ngokomzekelo, endaweni yamasebe, "iibhukhimaksi" zisetyenzisiweyo (amasebe anikwe igama awaxhaswanga), ngokungagqibekanga, xa kusenziwa i-clone / ukutsalwa, kungekhona indawo yokugcina ilayishiwe, kodwa kuphela isebe eliphambili, akukho phawu lokuqala lokuzibophelela ( indawo yeqonga), endaweni yokuthi “git fetch” kusetyenziswe “sl” umyalelo wokutsala”, endaweni yokuthi “git pull” - "sl pull -rebase", endaweni yokuba "git checkout COMMIT" - "sl goto COMMIT", endaweni yokuba "git reflog" - "sl journal", ukurhoxisa utshintsho endaweni "git checkout - FILE" "sl revert FILE" icacisiwe, kwaye "." isetyenziselwa ukuchonga isebe "HEAD". Kodwa ngokubanzi, iikhonsepthi eziqhelekileyo zamasebe kunye ne-clone / pull / push / commit / rebase imisebenzi zigcinwe.

Phakathi kweempawu ezongezelelweyo zeSapling toolkit, inkxaso ye "smartlog" ivelele, ekuvumela ukuba uhlole ngokubonakalayo imeko yendawo yakho yokugcina, ugxininise olona lwazi lubalulekileyo kwaye ucofe iinkcukacha ezingabalulekanga. Umzekelo, xa usebenzisa i-sl eluncedo ngaphandle kweengxoxo, kuphela utshintsho lwakho lwasekhaya luboniswa kwisikrini (ezinye zincitshisiwe), imeko yamasebe angaphandle, iifayile ezitshintshileyo kunye neenguqulelo ezintsha zokuzibophelela ziyaboniswa. Ukongezelela, i-interface yewebhu edibeneyo inikezelwa, eyenza kube lula ukuhamba ngokukhawuleza kwi-smart log, ukutshintsha umthi kunye nokuzibophelela.

I-Facebook ityhila inkqubo entsha yokulawula umthombo weSapling

Olunye uphuculo oluphawulekayo kwiSapling kukuba yenza kube lula ukulungisa nokusombulula iimpazamo kwaye ubuyele kwimeko yangaphambili. Umzekelo, imiyalelo “sl undo”, “sl redo”, “sl uncommit” kunye “sl unamend” inikwa ukubuyisela umva imisebenzi emininzi, imiyalelo “sl hide” kunye “sl unhide” isetyenziselwa ukufihla imisebenzi okwethutyana; kunye nokukhangela okusebenzisanayo kwiindawo ezindala kwaye ubuyele kwindawo ekhankanyiweyo ngomyalelo "sl hlehlisa -i umyalelo". I-Sapling ikwaxhasa ingqikelelo yesitaki sokuzibophelela, esikuvumela ukuba uququzelele uphononongo lwamanyathelo ngamanyathelo ngokwaphula ukusebenza okuntsonkothileyo kwiseti yeenguqu ezincinci, eziqondakalayo ezingaphezulu (ukusuka kwisakhelo esisisiseko ukuya kumsebenzi ogqityiweyo).

Izongezo ezininzi zilungiselelwe iSapling, kuquka i-ReviewStack interface yokuphonononga utshintsho (ikhowudi phantsi kwe-GPLv2), ekuvumela ukuba uqhube izicelo zokutsala kwi-GitHub kwaye usebenzise i-stack view of change. Ukongezelela, izongezo ziye zapapashwa ukuze zidityaniswe nabahleli be-VSCode kunye ne-TextMate, kunye nokuphunyezwa kwe-ISL (Interactive SmartLog) interface kunye neseva.

umthombo: opennet.ru

Yongeza izimvo