Git 2.50: Mga pagpapahusay sa pagganap para sa malalaking repositoryo at higit pa

git-2.50

Ilang araw na ang nakalipas ay inanunsyo ito Paglabas ng bagong bersyon ng proyekto ng Git 2.50, nagpapakilala ng higit sa 600 mga pagbabago hinimok ng isang aktibong komunidad na sa pagkakataong ito ay may kasamang 98 developer, kabilang ang 35 bagong contributor.

Ang bagong bersyon na ito ng Git 2.50 ay na-highlight sa pamamagitan ng pagsasama-sama ng mga bagong command (git-diff-pairs), mga bagong function para sa paglilinis, pag-filter, at pagpapanatili, ang pagpapalit ng recursive merge engine sa ORT, pati na rin ang mga pagpapahusay sa pagganap at pag-aayos ng bug.

Mga highlight ng Git 2.50

Sa bagong bersyong ito ng Git 2.50, isa sa pinakamahalagang bagong feature ay ang optimization sa paggamot ng tinatawag na "cruft pack", Iyon ay, mga pakete ng mga bagay na hindi naa-access o hindi na-reference ng mga sangay o tag. Ayon sa kaugalian, iniimbak ng Git ang mga bagay na ito sa isang solong, malaking file ng package, na maaaring magdulot ng mga isyu sa pagganap kapag nagre-repack ng mga repositoryo sa marami sa mga item na ito.

Gamit ang bagong bersyon, Binibigyang-daan ka ng Git na hatiin ang mga cruft pack na ito sa ilang mas maliliit na file, na binabawasan ang paggamit ng disk at pinapabuti ang pagganap ng input/output para sa maramihang pagpapatakbo. Bilang karagdagan, sat ipasok ang opsyon –combine-cruft-below-size, na nagpapahintulot pagsamahin ang maliliit na pakete sa isa nang mas may kakayahang umangkop kaysa sa nakaraang –max-cruft-size na opsyon, nang hindi nagpapataw ng limitasyon sa pinagsamang laki ng file. Ang bagong feature na ito ay lalong kapaki-pakinabang sa mga proyektong may mga naulilang bagay na nakakalat sa maraming pakete.

Ang isa pang pagpapabuti na naglalayong malakihang mga repositoryo ay ang pang-eksperimentong suporta para sa ang incremental update ng Mga indeks ng MIDX , na Nag-iimbak sila ng impormasyon tungkol sa mga bagay sa magkahiwalay na mga layer gamit ang mga bitmap file, na nagbibigay-daan para sa mas mabilis na pag-update habang nagdaragdag ng mga bagong commit. Ang pagsulong na ito ay kritikal para sa malalaking repositoryo na nangangailangan ng mabilis na pagpapatakbo ng pag-index nang hindi kinakailangang ganap na buuin muli ang metadata.

Kumpletuhin ang pagpapalit ng recursive merge engine na may ORT

Ang Git 2.50 ay nagpapakilala ng isang malaking pagbabago sa permanenteng pag-alis ng recursive fusion engine tradisyonal. sa halip, pinagsama-sama ang paggamit ng ORT, A mas moderno, mapanatili at mahusay na fusion engine. Ang ORT ay hindi lamang nag-aalok ng mas tumpak na pagtatasa ng salungatan, ngunit nagbibigay-daan din sa iyong i-verify kung posible ang isang pagsasanib nang hindi bumubuo ng mga karagdagang bagay. Higit pa rito, ang utos ng merge-tree ay may kasama na ngayong –quiet na opsyon para gamitin bilang silent merge checker nang hindi binabago ang repositoryo.

gitt-diff-pairs: ang solusyon sa mga problema sa scalability

Ang pagsusuri sa code ay walang alinlangan na isa sa mga haligi ng modernong collaborative development, at ang mga pagkakaiba o pagkakaiba sa pagitan ng mga rebisyon ay may mahalagang papel sa prosesong ito. Sa pagdating ng Git 2.50, isang solusyon na idinisenyo para sa scalability ay ipinakilala: ang bagong git-diff-pairs command.

Ayon sa kaugalian, upang makakuha ng paghahambing sa pagitan ng dalawang mga rebisyon gumamit ka ng isang utos tulad ng:

git diff HEAD~1 HEAD

Bumubuo ito ng kumpletong patch na naglalaman ng lahat ng pagbabago sa pagitan ng mga nakalistang rebisyon. Bagama't epektibo sa maraming kaso, maaari itong maging isyu sa pagganap kapag nakikitungo sa malalaking hanay ng mga binagong file.

Iyon ang dahilan kung bakit ang git-diff-pairs ay partikular na idinisenyo upang makatanggap ng raw input nang direkta mula sa output ng git diff-tree, at makabuo ng kaukulang mga patch nang mahusay at tumpak.

Ang paggamit ay kasing simple ng:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

Kinukuha ng command na ito ang ibinigay na mga pares ng blob at bumubuo ng eksaktong diff output, pinapanatili ang impormasyon sa konteksto at pinapayagan ang trabaho na hatiin sa mas maliliit na batch. Binubuksan nito ang pinto sa parallel processing, pinapabuti ang resource efficiency, at pinapadali ang scalability sa diff-based na mga tool tulad ng GitLab.

Mga bagong feature para sa paglilinis, pag-filter at pagpapanatili

Kasama sa Git 2.50 ang ilang karagdagang tool na idinisenyo upang mapabuti ang pagpapanatili ng repositoryo:

  • Ang utos ay naidagdag git reflog drop, na nagbibigay-daan sa iyong ganap na tanggalin ang reflog para sa isang partikular na sangay, mainam para sa paglilinis ng iyong kasaysayan ng trabaho kapag hindi mo na kailangang panatilihin ang mga nakaraang sanggunian.
  • Ang pagpipilian –filter cat-file –batch ay magagamit na ngayon sa git, na nagbibigay-daan sa iyong i-filter ang mga resulta ayon sa uri ng bagay.

Bilang karagdagan, ang ilang mga panloob na pag-optimize ay naka-highlight din:

  • Pinahusay na paggamit ng mga simbolikong link, na may prefix na pag-cache at pagbabawas ng mga redundant na tseke.
  • Pag-aalis ng mga dependency ng Perl sa dokumentasyon at mga script ng pagsubok, pinapalitan ang mga ito ng mga function ng shell o mga pagpapatupad ng C, na ginagawang mas madaling i-compile ang mga ito sa mga system na may mga minimalist na configuration.
  • Kasama ang isang controller userdiff para sa pagsusuri ng mga pagkakaiba sa mga .ini na file.
  • Pinahusay na compatibility ng git send-email command sa mga SMTP server gaya ng Outlook.

Sa wakas, kung interesado kang malaman ang higit pa tungkol dito, maaari mong konsultahin ang mga detalye sa sumusunod na link.