Git 2.51 prihaja s ključnimi izboljšavami delovanja in novimi funkcijami

git 2.51

Po dveh mesecih intenzivnega dela je razvojna skupnost Git predstavlja Git različico 2.51, posodobitev, ki Združuje 506 sprememb, pri katerih je sodelovalo 91 razvijalcev, od katerih jih je 21 prispevalo prvič.

Ta izdaja uvaja izboljšave, namenjene izboljšanju zmogljivosti in poenostavitvi upravljanja repozitorij, vključno z optimizacijami zmogljivosti za git-push in git-fetch, ter več spremembami, ki se gibljejo proti novi veji 3.x.

Ključne nove funkcije Git 2.51

Ena od prednosti Gita 2.51 je Optimizacija ukazov git push in git fetch v repozitorijih z velikim številom referenc. Ključ do te izboljšave je v paketni posodobitvi, ki obdeluje več povezav v eni sami transakciji in ne posamično.

Zahvaljujoč tej optimizaciji, Reftable zaledni sistem zdaj prekaša tradicionalni zaledni sistem za datoteke.V testih z repozitoriji, ki vsebujejo do 10 referenc, se je zmogljivost git fetch povečala za 000-krat za reftable in 22-krat za datoteke, medtem ko se je git push izboljšal za 1.25-krat oziroma 18-krat.

Druga pomembna inovacija je iUvedba tako imenovanih cruft paketov, zasnovano za shranjevanje nedostopnih objektov, ki niso povezani z vejami ali oznakami. Ti objekti, ki so bili prej razpršeni, zdaj je mogoče upravljati v ločeni embalažis, kar olajša njihovo upravljanje in zmanjša velikost indeksov z več paketi (MIDX).

Z Z novo nastavitvijo repack.MIDXMustContainCruft se Git izogne vključitvi teh objektov v glavne indekse.V testih na GitHubu je ta konfiguracija zmanjšala velikost indeksa za 38 %, pospešila pisanje za 35 % in izboljšala branje za 5 %.

Nov pristop k pakiranju objektov

El Ukaz git pack-objects vključuje možnost –path-walk, ki uvaja inovativno metodo za reorganizacijo datotek embalaže. Namesto obdelave objektov na podlagi njihovih zgoščevalnih vrednosti (hash), lahko Git zdaj iterira skozenj na podlagi poti do datotek in skupaj zapakira tiste, ki si delijo isto lokacijo. Ta pristop odpravlja potrebo po predhodnem razvrščanju objektov in ima za posledico manjše in učinkovitejše pakiranje datotek.

Tudi s to različico Standardiziran je bil nov format za izmenjavo delovnih stanj dreves in indeksov, ustvarjenih z Git Stash.Zdaj je mogoče izvoziti in uvoziti zaloge tako kot veje ali oznake, kar olajša premikanje stanj iz enega sistema v drugega.

Na primer:

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

Izboljšave klasičnih ukazov

Več Ukazi Git so prejeli ustrezne posodobitve:

  • git cat-file zdaj poroča o manjkajočih objektih in podmodulih, pri čemer prikazuje identifikatorje namesto le označevanja »manjkajoče«.
  • git log ima koristi od optimizacij Bloomovega filtra, kar pospeši iskanje z več potmi datotek.
  • Ukaza git switch in git restore, ki sta od leta 2019 veljala za eksperimentalna, sta končno stabilizirana kot sodobni alternativi ukazu git checkout.
  • Ukaz git whatchanged, ki je enakovreden ukazu git log –raw, je zastarel in bo odstranjen v Gitu 3.0.
  • git for-each-ref prejme možnost –start-after, ki skupaj z –count omogoča oštevilčenje izhoda.
  • Ukaza git merge in git pull zdaj vključujeta možnost –compact-summary, ki zagotavlja bolj jedrnato obliko povzetka.

Podpora za C99 in nova pravila za prispevke

Git še naprej prilagaja svojo kodo značilnostim standarda C99. Čeprav je združljiv prevajalnik potreben že od leta 2021, razvijalci previdno skrbijo za ohranjanje združljivosti s prevajalniki, ki ga izvajajo le delno.

Poleg tega je bila v politiki prispevkov uvedena pomembna sprememba: Popravke je zdaj mogoče oddati pod psevdonimom, odločitev, usklajena s pravili jedra Linuxa in zasnovana tako, da ponuja večjo prilagodljivost sodelavcem.

V prihodnje se bomo srečali z Gitom 3.0

El Razvojna ekipa je posodobila tudi načrt za Git 3.0., kjer izstopata dve ključni spremembi: privzeta uporaba SHA-256 kot identifikatorja objekta in sprejetje formata reftable za shranjevanje referenc vej in oznak. Namen teh izboljšav je izboljšati varnost in učinkovitost v vse večjih in kompleksnejših repozitorijih.

vir: https://lore.kernel.org