Nakon dva mjeseca intenzivnog rada, razvojna zajednica Git predstavlja Git verziju 2.51, ažuriranje koje Okuplja 506 promjena, u kojima je učestvovao 91 programer, od kojih je 21 doprinijelo prvi put.
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.
Git 2.51 ističe se
Jedna od glavnih karakteristika Gita 2.51 je Optimizacija git push i git fetch komandi u repozitorijima s velikim brojem referenci. Ključ ovog poboljšanja je u grupnom ažuriranju, koji obrađuje više linkova u jednoj transakciji, a ne pojedinačno.
Zahvaljujući ovoj optimizaciji, Reftable backend sada nadmašuje tradicionalni backend za datoteke.U testovima s repozitorijumima koji sadrže do 10 referenci, performanse git fetch-a su se povećale za 000x za reftable i 22x za datoteke, dok su se git push poboljšale za 1.25x i 18x, respektivno.
Još jedna važna inovacija je iUvođenje takozvanih cruft paketa, dizajnirane za pohranjivanje nedostupnih objekata koji nisu povezani s granama ili oznakama. Ovi objekti, koji su prethodno bili raspršeni, sada se može upravljati u odvojenom pakovanjus, što ih čini lakšim za kontrolu i smanjuje veličinu višepaketnih indeksa (MIDX).
Sa Novo podešavanje repack.MIDXMustContainCruft, Git izbjegava uključivanje ovih objekata u glavne indekseU testovima na GitHub-u, ova konfiguracija je smanjila veličinu indeksa za 38%, ubrzala pisanje za 35% i poboljšala čitanje za 5%.
Novi pristup pakovanju objekata
El Komanda git pack-objects uključuje opciju –path-walk, koji uvodi inovativnu metodu reorganizirati datoteke pakiranja. Umjesto obrade objekata na osnovu njihovih heševa, Git sada može iterirati kroz njih na osnovu putanje do datoteke, pakujući one koji dijele istu lokaciju zajedno. Ovaj pristup eliminira potrebu za prethodnim sortiranjem objekata i rezultira manjim, efikasnijim pakiranjem datoteka.
I sa 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 sistema 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 komandi
nekoliko Git komande 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 pretrage s više putanja datoteka.
- Komande git switch i git restore, koje se smatraju eksperimentalnim od 2019. godine, konačno su stabilizovane kao moderne alternative za git checkout.
- 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 sa –count omogućava paginaciju izlaza.
- git merge i git pull sada uključuju opciju –compact-summary, koja pruža koncizniji format sažetka.
Podrška za C99 i nova pravila za doprinose
Git nastavlja prilagođavati svoj kod karakteristikama C9 standarda9. Iako je kompatibilan kompajler potreban od 2021. godine, programeri oprezno postupaju kako bi održali kompatibilnost s kompajlerima koji ga samo djelimič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 da ponudi veću fleksibilnost saradnicima.
Radujemo se Gitu 3.0
El Razvojni tim je također ažurirao plan za 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 efikasnosti u sve većim i složenijim repozitorijima.
Izvor: https://lore.kernel.org