Nakon dva mjeseca intenzivnog rada, razvojna zajednica Git predstavlja Git verziju 2.51, ažuriranje koje Okuplja 506 promjena u kojima je sudjelovao 91 programer, od kojih je 21 prvi put doprinijelo.
Ovo izdanje uvodi poboljšanja osmišljena za poboljšanje performansi i pojednostavljenje upravljanja repozitorijima, uključujući optimizacije performansi za git-push i git-fetch, kao i nekoliko promjena koje se kreću prema novoj 3.x grani.
Ključne nove značajke Git 2.51
Jedna od glavnih prednosti Gita 2.51 je Optimizacija naredbi git push i git fetch u repozitorijima s velikim brojem referenci. Ključ ovog poboljšanja je u serijskom ažuriranju, koji obrađuje više veza u jednoj transakciji, a ne pojedinačno.
Zahvaljujući ovoj optimizaciji, Reftable backend sada nadmašuje tradicionalni backend za datoteke.U testovima s repozitorijima koji sadrže do 10 000 referenci, performanse git fetch-a su se povećale 22x za reftable i 1.25x za datoteke, dok se git push poboljšao 18x odnosno 1.21x.
Još jedna važna inovacija je iUvođenje takozvanih cruft paketa, dizajnirane za pohranu nedostupnih objekata koji nisu povezani s granama ili oznakama. Ti objekti, koji su prethodno bili raspršeni, sada se može upravljati u odvojenom pakiranjus, što ih čini lakšim za kontrolu i smanjuje veličinu višepaketnih indeksa (MIDX).
S nova postavka repack.MIDXMustContainCruft, Git izbjegava uključivanje ovih objekata u glavne indekseU testovima na GitHubu, ova je konfiguracija smanjila veličinu indeksa za 38%, ubrzala pisanje za 35% i poboljšala čitanje za 5%.
Novi pristup pakiranju objekata
El Naredba git pack-objects uključuje opciju –path-walk, koji uvodi inovativnu metodu reorganizirati datoteke pakiranja. Umjesto obrade objekata na temelju njihovih hashova, Git sada može iterirati kroz njih na temelju putanje datoteke, pakirajući one koji dijele istu lokaciju zajedno. Ovaj pristup eliminira potrebu za prethodnim sortiranjem objekata i rezultira manjim, učinkovitijim pakiranjem datoteka.
I s ovom verzijom Standardiziran je novi format za razmjenu radnih stanja stabla i indeksa kreiranih pomoću Git Stash-a.Sada je moguće izvoziti i uvoziti spremljene datoteke baš kao grane ili oznake, što olakšava premještanje stanja iz jednog sustava u drugi.
Na primjer:
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
Poboljšanja klasičnih naredbi
Nekoliko Git naredbe su dobile relevantna ažuriranja:
- git cat-file sada prijavljuje nedostajuće objekte i podmodule, prikazujući identifikatore umjesto samo označavanja "nedostaje".
- git log ima koristi od optimizacija Bloom filtera, ubrzavajući pretraživanje s više putanja datoteka.
- Naredbe git switch i git restore, koje se smatraju eksperimentalnima od 2019., konačno su stabilizirane kao moderne alternative git checkoutu.
- Naredba git whatchanged, ekvivalentna naredbi git log –raw, je zastarjela i bit će uklonjena u Gitu 3.0.
- git for-each-ref prima opciju –start-after, koja zajedno s –count omogućuje paginaciju izlaza.
- git merge i git pull sada uključuju opciju –compact-summary, koja pruža sažetiji format sažetka.
Podrška za C99 i nova pravila doprinosa
Git nastavlja prilagođavati svoj kod karakteristikama C9 standarda9. Iako je kompatibilni kompajler potreban od 2021., programeri oprezno postupaju kako bi održali kompatibilnost s kompajlerima koji ga samo djelomično implementiraju.
Osim toga, uvedena je značajna promjena u politici doprinosa: Zakrpe se sada mogu slati pod pseudonimom, odluka usklađena s pravilima Linux kernela i osmišljena kako bi ponudila veću fleksibilnost suradnicima.
Pogled prema Gitu 3.0
El Razvojni tim je također ažurirao plan na Git 3.0., gdje se ističu dvije ključne promjene: zadana upotreba SHA-256 kao identifikatora objekta i usvajanje reftable formata za pohranjivanje referenci grana i oznaka. Cilj ovih poboljšanja je poboljšanje sigurnosti i učinkovitosti u sve većim i složenijim repozitorijima.
izvor: https://lore.kernel.org