Facebook ekpughere usoro njikwa isi iyi ọhụrụ Sapling

Facebook (amachibidoro na Russian Federation) bipụtara usoro nchịkwa isi iyi Sapling, nke a na-eji na mmepe nke ọrụ ụlọ ọrụ dị n'ime. Usoro a na-achọ ịnye interface njikwa ụdị amara nke ọma nke nwere ike ịba ụba maka nnukwu ebe nchekwa na-agafe ọtụtụ iri nde faịlụ, ntinye na alaka. Edere koodu ndị ahịa na Python na ajari, ma meghere n'okpuru ikike GPLv2.

E mepụtala akụkụ sava dị iche maka ọrụ dịpụrụ adịpụ nke ọma yana ebe nchekwa na sistemụ faịlụ mebere emebere maka ịrụ ọrụ na obere ebe nchekwa mpaghara dị ka a ga-asị na ọ bụ ebe nchekwa zuru oke (onye nrụpụta ahụ na-ahụ ebe nchekwa ahụ dum, mana naanị data achọrọ ka a na-edegharị na sistemụ mpaghara). Koodu maka ihe ndị a ejiri na akụrụngwa Facebook abụghị ebe mepere emepe, mana ụlọ ọrụ ahụ ekwela nkwa ibipụta ya n'ọdịnihu. Agbanyeghị, enwere ike ịchọta ihe atụ na ebe nchekwa Sapling. ihe nkesa Mononoke (edere na Rust) na VFS EdenFS (edere na C++). Ihe ndị a bụ nhọrọ, yana Sapling client, nke na-akwado cloning Git repositories na mmekọrịta na ya sava dabere na Git LFS ma na-arụ ọrụ na ọrụ git hosting dịka GitHub.

Echiche bụ isi nke usoro ahụ bụ na mgbe ị na-emekọrịta ihe na akụkụ ihe nkesa pụrụ iche nke na-enye nchekwa nke ebe nchekwa ahụ, a na-arụ ọrụ niile dabere na ọnụọgụ faịlụ ejiri n'ezie na koodu onye nrụpụta na-arụ ọrụ, ma adabereghị na ya. ngụkọta nha nke ebe nchekwa niile. Dịka ọmụmaatụ, onye nrụpụta nwere ike iji naanị obere akụkụ koodu sitere na nnukwu ebe nchekwa na naanị obere akụkụ ahụ ka a ga-akwaga na sistemụ ya, ọ bụghị ebe nchekwa ahụ dum. A na-ejupụta akwụkwọ ndekọ na-arụ ọrụ nke ọma ka a na-enweta faịlụ sitere na ebe nchekwa, nke, n'otu aka ahụ, na-enye gị ohere ịme ngwa ngwa na akụkụ nke koodu gị, mana n'aka nke ọzọ na-eduga na nkwụsịtụ mgbe ị na-enweta faịlụ ọhụrụ maka faịlụ ọhụrụ. oge mbụ ma na-achọ ịnweta netwọkụ mgbe niile (nyere iche na ọnọdụ offline maka ịkwadebe mmemme).

Na mgbakwunye na ntinye data mgbanwe, Sapling na-arụkwa ọrụ kachasị mma iji belata nbudata ozi na akụkọ mgbanwe (dịka ọmụmaatụ, 3/4 nke data na ebe nchekwa na Linux kernel bụ akụkọ mgbanwe). Iji rụọ ọrụ nke ọma na akụkọ ihe mere eme nke mgbanwe, a na-echekwa data metụtara ya na nnochite anya nke na-enye gị ohere ibudata akụkụ nke ọ bụla nke eserese ntinye na sava ahụ. Onye ahịa ahụ nwere ike ịrịọ ozi sitere na ihe nkesa gbasara mmekọrịta dị n'etiti ọtụtụ mmemme ma budata naanị akụkụ dị mkpa nke eserese ahụ.

Ihe oru ngo a na-etolite n'ime afo 10 gara aga ma e kere ya iji dozie nsogbu mgbe ị na-ahazi ohere ịnweta nnukwu ụlọ ọrụ monolithic na otu alaka ụlọ ọrụ, nke jiri ọrụ "rebase" kama "jikọta". N'oge ahụ, ọ dịghị ihe ngwọta na-emeghe maka ịrụ ọrụ na ebe nchekwa ndị dị otú ahụ, ndị injinia Facebook kpebiri ịmepụta usoro nchịkwa nsụgharị ọhụrụ nke ga-egbo mkpa ụlọ ọrụ ahụ, kama ịkewa ọrụ n'ime obere ebe nchekwa, nke ga-eduga na mgbagwoju anya nke ụlọ ọrụ ahụ. njikwa ịdabere (n'otu oge, iji dozie nsogbu yiri ya, Microsoft kere GVFS oyi akwa). Na mbụ, Facebook jiri usoro Mercurial na ọrụ Sapling na ọkwa mbụ mepụtara dị ka mgbakwunye na Mercurial. Ka oge na-aga, sistemụ ahụ ghọrọ ọrụ kwụụrụ onwe ya nwere ụkpụrụ nke ya, usoro nchekwa na algọridim, nke agbasakwara site n'ikike ya na ebe nchekwa Git na-emekọrịta ihe.

Maka ọrụ, a na-enye akụrụngwa iwu "sl", nke na-emejuputa echiche, usoro ọrụ na interface nke ndị mmepe maara nke ọma Git na Mercurial. Okwu okwu na iwu dị na Sapling dịtụ iche na Git ma dị nso na Mercurial. Dịka ọmụmaatụ, kama alaka, a na-eji "ibe edokọbara" (a naghị akwado alaka aha ya), site na ndabara, mgbe a na-eme clone / ịdọrọ, ọ bụghị ebe nchekwa ahụ dum ka a na-ebu ibu, ma ọ bụ naanị alaka ụlọ ọrụ, ọ dịghị akara mmalite nke ime ihe (nke a na-eme). ebe a na-eme ihe), kama ịbụ “git fetch” a na-eji iwu “sl” mee ihe dọkpụrụ, kama ịbụ “git pull” - “sl pull -rebase” kama ịbụ “git checkout COMMIT” - “sl goto COMMIT” kama ịbụ "git reflog" - "sl journal", kagbuo mgbanwe kama ịbụ "git checkout - FILE" "sl revert FILE" ka akọwapụtara, na "" ka a na-eji mata alaka "HEAD". Mana n'ozuzu, a na-echekwa echiche izugbe nke alaka na clone / pull/push/commit/rebase.

N'ime atụmatụ ndị ọzọ nke ngwa ọrụ Sapling, nkwado maka "smartlog" pụtara, nke na-enye gị ohere iji anya nyochaa ọnọdụ nke ebe nchekwa gị, gosipụta ozi kachasị mkpa ma kpochapụ nkọwa ndị na-adịghị mkpa. Dịka ọmụmaatụ, mgbe ị na-agba ọsọ sl utility na-enweghị arụmụka, naanị mgbanwe mpaghara gị ka a na-egosipụta na ihuenyo (ndị ọzọ na-ebelata), ọnọdụ nke alaka ndị dị n'èzí, faịlụ gbanwere na nsụgharị ọhụrụ nke emepụtara. Na mgbakwunye, a na-enye ihe ntanetị mmekọrịta, nke na-eme ka o kwe omume ịnyagharịa ngwa ngwa site na log smart, gbanwee osisi na ime.

 Facebook ekpughere usoro njikwa isi iyi ọhụrụ Sapling

Ọganihu ọzọ ama ama na Sapling bụ na ọ na-eme ka ọ dị mfe idozi na dozie njehie wee laghachi na steeti gara aga. Dịka ọmụmaatụ, a na-enye iwu "sl degharịa", "sl redo", "sl uncommit" na "sl unanamend" iji weghachite ọtụtụ ọrụ; na maka ngagharị mmekọrịta site na steeti ochie wee laghachi n'ebe a kapịrị ọnụ site na iji iwu "sl undo -i Command". Sapling na-akwadokwa echiche nke nkwakọba nkwakọba ihe, nke na-enye gị ohere ịhazi nyocha site na nzọụkwụ site n'ịmebi ọrụ mgbagwoju anya n'ime obere mgbanwe mgbanwe ndị dị ntakịrị, nke nwere ike ịghọta (site na isi ihe ruo na arụ ọrụ arụchara).

A kwadebere ọtụtụ mgbakwunye maka Sapling, gụnyere interface ReviewStack maka nyochaa mgbanwe (koodu n'okpuru GPLv2), nke na-enye gị ohere ịhazi arịrịọ ịdọrọ na GitHub ma jiri nchịkọta nchịkọta nke mgbanwe. Na mgbakwunye, e bipụtala mgbakwunye maka ntinye aka na ndị editọ VSCode na TextMate, yana mmejuputa ISL (Interactive SmartLog) interface na ihe nkesa.

isi: opennet.ru