Isistimu yokulawula umthombo we-Git 2.41 iyatholakala

Ngemuva kwezinyanga ezintathu zokuthuthukiswa, ukukhululwa kohlelo lokulawula umthombo osabalalisiwe i-Git 2.41 kushicilelwe. I-Git ingenye yezinhlelo ezidume kakhulu, ezinokwethenjelwa, nezisebenza kahle kakhulu zokulawula inguqulo ehlinzeka ngamathuluzi okuthuthukisa angenawo umugqa aguquguqukayo asekelwe kumagatsha nokuhlanganisa amagatsha. Ukuqinisekisa ubuqotho bomlando kanye nokumelana nezinguquko ze-retroactive, i-hashing engacacile yawo wonke umlando wangaphambilini ekuzinikeleni ngakunye kuyasetshenziswa, kuyenzeka futhi ukuqinisekisa amathegi angawodwana kanye nokuzibophezela ngamasiginesha edijithali avela konjiniyela.

Uma kuqhathaniswa nokukhishwa kwangaphambilini, izinguquko ezingu-542 zamukelwa enguqulweni entsha, elungiselelwe ngokubamba iqhaza kwabathuthukisi abangu-95, abangu-29 babo babambe iqhaza ekuthuthukisweni okokuqala. Okuqanjiwe okuyinhloko:

  • Ukuphathwa okuthuthukisiwe kwezinto ezingafinyeleleki ezingabaluliwe endaweni yokugcina (amagatsha noma omaka abakhonjiswa). Izinto ezingafinyeleleki zikhishwa umqoqi wezibi, kodwa zihlala endaweni yokugcina isikhathi esithile ngaphambi kokususwa ukuze kugwenywe izimo zobuhlanga. Ukuze ugcine ithrekhi yesikhathi sezinto ezingenakufinyeleleka, kuyadingeka ukubopha amalebula kubo ngesikhathi sokushintsha kwezinto ezifanayo, okungavumeli ukulondolozwa kufayela elilodwa lepakethe, lapho zonke izinto zinesikhathi sokushintsha okufanayo. Ngaphambilini, into ngayinye engafinyeleleki yayigcinwe efayeleni elihlukile, okuholele ezinkingeni uma kunenani elikhulu lezinto ezintsha ezingafinyeleleki ebezingakasuswa. Ekukhishweni okusha, ngokuzenzakalelayo, indlela "ye-cruft packs" isetshenziselwa ukupakisha izinto ezingafinyeleleki, okuvumela ukugcina zonke izinto ezingafinyeleleki kufayela elilodwa lephakethe, futhi kubonisa idatha ngesikhathi sokulungiswa kwento ngayinye etafuleni elihlukile eligcinwe kufayela elilodwa. ifayela elinesandiso esithi β€œ.mtimes” futhi lixhunywe kusetshenziswa ifayela lenkomba elinesandiso esithi ".idx".
    Isistimu yokulawula umthombo we-Git 2.41 iyatholakala
  • Ngokuzenzakalelayo, ukugcina inkomba ehlanekezelwe (revindex) kudiski yamafayela ephakethe kunikwe amandla. Lapho sivivinywa kumakhosombe e-torvalds/linux, ukusetshenziswa kwenkomba ehlehlayo kusivumele ukuba sisheshise ukusebenza kwe-"git push" okudinga insiza izikhathi eziyi-1.49, kanye nokusebenza okulula, njengokubala usayizi wento eyodwa kusetshenziswa i-"git cat- ifayela --batch='%(objectsize:disk)' Β» izikhathi ezingama-77. Amafayela (".rev") anenkomba ehlehlayo azogcinwa ngaphakathi kwendawo yokugcina inqolobane ethi ".git/objects/pack".

    Khumbula ukuthi i-Git igcina yonke idatha ngesimo sezinto, ezibekwe kumafayela ahlukene. Ukwandisa ukusebenza kahle kwendawo yokugcina izinto, izinto zifakwa futhi kumafayela ephakethe, lapho ulwazi lwethulwa ngendlela yokulandelana kwezinto ezilandelana ngokulandelana (ifomethi efanayo isetshenziswa lapho kudluliswa izinto nge-git fetch kanye ne-git. push imiyalo). Ifayela lenkomba (.idx) lenzelwa ifayela ngalinye lephakethe, elikuvumela ukuthi unqume ngokushesha i-offset efayeleni lephakethe lapho into enikeziwe igcinwa khona yisihlonzi sento.

    Inkomba yokuhlehla efakwe ekukhishweni okusha ihloselwe ukuhlela inqubo yokunquma i-ID yento kulwazi olumayelana nendawo yento kufayela lephakethe. Ngaphambilini, ukuguqulwa okunjalo kwenziwa empukaneni ngesikhathi sokuhlukaniswa kwefayela lephakethe futhi lagcinwa kuphela enkumbulweni, eyayingavumeli ukusetshenziswa kabusha kwezinkomba ezinjalo futhi kwaphoqelela ukuthi inkomba yenziwe ngaso sonke isikhathi. Ukusebenza kokwakhiwa kwenkomba kuncishiswa ekwakheni amapheya amaningi okuma kwento nokuyihlunga ngokuma, okungathatha isikhathi eside kumafayela ephakethe elikhulu.

    Isibonelo, ukusebenza kokubonisa okuqukethwe kwezinto, okusebenzisa inkomba eqondile, kwakushesha izikhathi ezingu-62 kunokusebenza kokubonisa usayizi wezinto, lapho idatha yobudlelwane bendawo-to-into ingazange ikhonjiswe. Ngemva kokusebenzisa i-reverse index, le misebenzi yaqala ukuthatha cishe isikhathi esifanayo. Izinkomba zokuhlehla nazo zikuvumela ukuthi usheshise ukusebenza kokuthumela izinto lapho ukhipha imiyalo yokulanda nokuphusha ngokudlulisela ngokuqondile idatha eyenziwe ngomumo isuka kudiski.

    Isistimu yokulawula umthombo we-Git 2.41 iyatholakala

  • Usekelo olungeziwe lokudlulisa izihloko ze-WWW-Qinisekisa phakathi kwesibambi sokuqinisekisa kanye nesevisi yokuqinisekisa kuphrothokholi "yomsizi wokuqinisekisa" esetshenziselwa ukudlulisa imininingwane lapho ufinyelela amakhosombe akhawulelwe. Usekelo lwenhlokweni ye-WWW-Qinisekisa ivumela amapharamitha wesikophu se-OAuth ukuthi adluliselwe ekufinyeleleni komsebenzisi okuhlukene kancane kancane kumakhosombe futhi uhlukanise izikophu ezitholakalayo zezicelo.
  • Inketho yefomethi engeziwe "%(phambili-ngemuva: )", okukuvumela ukuthi uthole ngokushesha ulwazi mayelana nenani lezenzo ezikhona noma ezingekho egatsheni elithile, elihlobene nelinye igatsha (ingakanani igatsha elisala ngemuva noma ngaphambi kwelinye ezingeni le-compound). Ngaphambilini, ukuthola lolu lwazi kwakudinga imiyalo emibili ehlukene: "git rev-list --count main..my-feature" ukuze uthole inombolo yezenzo ezihlukile egatsheni, kanye "ne-git rev-list --count my-feature. main" ukuze uthole izinombolo ezingekho. Manje izibalo ezinjalo zingancishiswa zibe umyalo owodwa, okwenza izibambi zokubhala zibe lula futhi zinciphise isikhathi sokwenza. Isibonelo, ukuze ubonise amagatsha angahlanganisiwe futhi uhlole ukuthi angemuva noma angaphambili kwegatsha lawo eliyinhloko, ungasebenzisa umugqa owodwa: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(phambili-ngemuva :origin/HEAD)' \ refs/heads/tb/ | ikholomu -t tb/cruft-extra-tips 2 96 tb/for-ref-refβ€”khipha 16 96 tb/roaring-bitmaps 47 3 esikhundleni sombhalo owake wasetshenziswa, ohamba kancane izikhathi ezingu-17: $ git for-each-ref - format='%(refname:short)' --no-merged=origin/HEAD \ refs/heads/tb | ngenkathi ufunda ref do ahead="$(git rev-list --count origin/HEAD..$ref)" behind="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ahead" "$ngemuva" kwenziwe | ikholomu -t tb/cruft-extra-tips 2 96 tb/for-ref-ref-ngaphandle 16 96 tb/roaring-bitmaps 47 3
  • Kwengezwe inketho ethi "--porcelain" kumyalo we-"git fetch", okhiqiza okukhiphayo ngefomethi " ”, ayifundeki kangako, kodwa ilungele ukuncozululwa kumaskripthi.
  • Kwengezwe isilungiselelo esithi "fetch.hideRefs" ukuze kusheshiswe imisebenzi ye-"git fetch" ngokufihla ingxenye yezixhumanisi endaweni yokugcina yendawo esigabeni sokuhlola ukuthi ingabe iseva ithumele isethi egcwele yezinto, okonga isikhathi ngokukhawulela isheke kumaseva kuphela. lapho idatha ibuyiswa khona ngokuqondile. Isibonelo, lapho kuhlolwa kusistimu enamakhosombe aqukethe inani elikhulu lezixhumanisi zangaphandle ezilandelwayo, ngaphandle kwalezo eziqondiswe kusiseva eqondiwe esikude esingu-$ kwehlisa umsebenzi we-"git fetch" ukusuka kumaminithi angu-20 ukuya kumasekhondi angu-30. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ landa i-$remote
  • Umyalo we-"git fsck" usebenzisa ikhono lokuhlola inkohlakalo, ukufanisa i-checksum, nokulunga kwamanani kuma-bitmaps okufinyeleleka kanye nezinkomba zokuhlehla.
  • Umyalo othi "git clone --local" manje ubonisa iphutha lapho uzama ukukopisha endaweni equkethe izixhumanisi ezingokomfanekiso ngaphakathi kwe-$GIT_DIR.

Source: opennet.ru

Engeza amazwana