„Git 2.51“ pasirodo su svarbiais našumo patobulinimais ir naujomis funkcijomis

2.51

Po dviejų mėnesių intensyvaus darbo, kūrėjų bendruomenė „Git“ pristato „Git 2.51“ versiją, atnaujinimas, kuris Jame yra 506 pakeitimai, kuriuose dalyvavo 91 kūrėjas, iš kurių 21 prisidėjo pirmą kartą.

Šiame leidime pristatomi patobulinimai, skirti pagerinti našumą ir supaprastinti saugyklų valdymą, įskaitant „git-push“ ir „git-fetch“ našumo optimizavimą, taip pat keli pakeitimai, susiję su nauja 3.x šaka.

„Git 2.51“ pagrindinės naujos funkcijos

Vienas iš „Git 2.51“ akcentų yra „Git push“ ir „git fetch“ komandų optimizavimas saugyklose su daugybe nuorodų. Šio patobulinimo esmė slypi paketiniame atnaujinime, kuris apdoroja kelias nuorodas vienos operacijos metu, o ne atskirai.

Dėl šios optimizacijos, „Reftable“ posistemė dabar veikia geriau nei tradicinė failų posistemė.Testuose su saugyklomis, kuriose yra iki 10 000 nuorodų, „git fetch“ našumas padidėjo 22 kartus „reftable“ ir 1.25 karto failų atveju, o „git push“ pagerėjo atitinkamai 18 kartų ir 1.21 karto.

Dar viena svarbi naujovė yra „i“.Vadinamųjų kruizinių paketų įvedimas, skirta saugoti nepasiekiamus objektus, kurie nėra susieti su šakomis ar žymėmis. Šie objektai, kurie anksčiau buvo išsklaidyti, dabar galima valdyti atskiroje pakuotėjes, todėl juos lengviau valdyti ir sumažėja kelių paketų indeksų (MIDX) dydis.

Su naujas repack.MIDXMustContainCruft nustatymas, „Git“ vengia įtraukti šiuos objektus į pagrindinius indeksus„GitHub“ bandymuose ši konfigūracija sumažino indekso dydį 38 %, pagreitino rašymą 35 % ir pagerino skaitymą 5 %.

Naujas požiūris į objektų pakavimą

El „git pack-objects“ komanda turi „-path-walk“ parinktį, kuris pristato novatorišką metodą pertvarkyti pakavimo bylas. Užuot apdorojęs objektus pagal jų maišos vertes, „Git“ dabar gali juos iteruoti pagal jų failų kelią, supakuodamas tuos, kurie yra toje pačioje vietoje. Šis metodas pašalina poreikį iš anksto rūšiuoti objektus ir leidžia supakuoti mažesnius, efektyvesnius failus.

Su šia versija taip pat Standartizuotas naujas formatas, skirtas keistis veikiančių medžių būsenomis ir indeksais, sukurtais naudojant „Git Stash“.Dabar galima eksportuoti ir importuoti saugyklas kaip šakas ar žymas, todėl lengviau perkelti būsenas iš vienos sistemos į kitą.

Pavyzdžiui:

git stash export --to-ref refs/stashes/mi-stash git push origin refs/stashes/mi-stash git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash

Klasikinių komandų patobulinimai

Keletas „Git“ komandos gavo atitinkamus atnaujinimus:

  • „git cat-file“ dabar praneša apie trūkstamus objektus ir submodulius, rodydamas identifikatorius, o ne tik žymėdamas kaip „trūksta“.
  • „Git Log“ naudoja „Bloom“ filtrų optimizavimą, kuris pagreitina paiešką naudojant kelis failų kelius.
  • „Git Switch“ ir „Git Restore“ komandos, nuo 2019 m. laikytos eksperimentinėmis, pagaliau tapo stabiliomis ir tapo moderniomis „Git Checkout“ alternatyvomis.
  • Komanda „git whatchanged“, atitinkanti komandą „git log –raw“, yra nebenaudojama ir bus pašalinta iš „Git 3.0“.
  • „git for-each-ref“ gauna „--start-after“ parametrą, kuris kartu su „-count“ leidžia puslapiuoti išvestį.
  • „git merge“ ir „git pull“ dabar apima parinktį „–compact-summary“, kuri suteikia glaustesnį santraukos formatą.

C99 palaikymas ir naujos įmokų taisyklės

„Git“ toliau pritaiko savo kodą prie C9 standarto savybių.9. Nors suderinamas kompiliatorius reikalingas nuo 2021 m., kūrėjai atsargiai stengiasi išlaikyti suderinamumą su kompiliatoriais, kurie jį įgyvendina tik iš dalies.

Be to, įmokų politikoje buvo įvestas reikšmingas pakeitimas: Pataisymus dabar galima pateikti pseudonimu, sprendimas, suderintas su „Linux“ branduolio taisyklėmis ir skirtas suteikti daugiau lankstumo bendraautoriams.

Žvelgiant į „Git 3.0“

El Kūrimo komanda taip pat atnaujino „Git 3.0“ veiksmų planą., kur išsiskiria du pagrindiniai pakeitimai: numatytasis SHA-256 naudojimas kaip objekto identifikatorius ir „reftable“ formato taikymas šakų ir žymų nuorodoms saugoti. Šiais patobulinimais siekiama pagerinti saugumą ir efektyvumą vis didesnėse ir sudėtingesnėse saugyklose.

Fuente: https://lore.kernel.org