- MIDX bez cruft-a: novo ponašanje ponovnog pakiranja plus repack.MIDXMustContainCruft daje manje, brže višepakirane indekse.
- Pakovanje po putanji: --path-walk mod često kreira znatno manje pakete sa konkurentnim vremenom.
- Razmjena spremljenih podataka: izvoz/uvoz unosa spremljenih podataka putem referenci za sigurno premještanje rada između mašina.
- Alati i plan razvoja: poboljšani filteri za Cat-file i Bloom; stabilizirano prebacivanje/vraćanje; priprema za Git 3.0 (SHA-256, reftable).

git 2.51 je sada dostupan, donoseći širok set poboljšanja performansi i upotrebljivosti kojima je doprinijelo više od 91 programera, uključujući 21 programera koji prvi put doprinosi. Ovo izdanje se fokusira na efikasnost pohrane, brže čitanje u velikim repozitorijima i bolje načine za premještanje nedovršenog rada između mašina bez preskakanja preko složenih zadataka.
Ključne teme uključuju indekse višestrukih paketa bez nečistoća, novi alat za pakovanje po stash-walk-u i format zamjene skladišta.Također ćete primijetiti stalan napredak prema jačim kriptografskim zadanim postavkama (SHA-256) i budućim promjenama planiranim za Git 3.0, plus pragmatično poboljšanje svakodnevnih vodovodnih instalacija i porculana.
Indeksi višepakiranja bez cruft-free-a
Veliki repozitoriji se oslanjaju na packfiles i MIDX (multi-pack indekse) za brzo rješavanje objekataHistorijski gledano, nedostupan objekti su završavali u "cruft paketima" i trebali su ostati izvan MIDX-a. Ali ako nekada nedostupan objekt kasnije postane dostupan i nalazi se samo u cruft paketu, to može poremetiti pretpostavke bitmape i usporiti stvari.
Git 2.51 mijenja način na koji se grade paketi koji nisu cruftTokom ponovnog pakovanja, Git sada osigurava da se objekti čija se jedina druga kopija nalazi u cruft paketu dupliraju u skup koji nije cruft, čineći taj skup zatvorenim za dostizanje. U praksi, ovo omogućava manje i brže multi-pack indekse bez žrtvovanja ispravnosti.
Nova konfiguracija, repack.MIDXMustContainCruft, aktivira ovu strategiju., pohranjivanje paketa "crufta" izvan MIDX-a uz održavanje brzine pretrage. GitHub izvještava o opipljivim dobicima ovog pristupa u velikom monorepozitoriju: veličina MIDX-a se smanjila za ~38%, pisanje je bilo brže za ~35%, a performanse čitanja su se poboljšale za oko 5%.
Ako je vaš monorepo MIDX postao nezgrapan, pokušajte ponovo pakirati s novom postavkom i izmjerite dobitke pretraživanja i prolaska u vašim CI i radnim procesima za razvojne programere.
Manji paketi sa šetnjom stazom

Odabir dobrih delta je srž kompaktnih packfileovaRanija izdanja su uvela revidirani name-hash kako bi se poboljšalo delta uparivanje, ali Git 2.51 ide dalje s načinom rada "path walk" koji grupira i emituje sve objekte iz iste putanje zajedno, u potpunosti zaobilazeći heuristiku name-hash-a.
U mnogim repozitorijima, path walk proizvodi znatno manje pakete a istovremeno ostati konkurentan u vremenu izvođenja u odnosu na tradicionalne prolaze redoslijeda revizija. Posebno je efikasno kada imate mnogo verzija istih datoteka koje se razvijaju duž konzistentnih putanja.
Da eksperimentišete s tim tokom ponovnog pakovanja, koristite novu opciju na pack-objektima: --path-walkZa timove koji maksimalno ograničavaju veličinu paketa, ovo može smanjiti mrežni prijenos i lokalnu pohranu odjednom.
Format za razmjenu Stash-a
Premještanje zaliha između mašina je bilo nezgodno jer su stash commit-ovi skriveni iza jednog refs/stashGit 2.51 uvodi varijantu koja predstavlja višestruke stash unose kao niz povezanih commit-ova, tako da se ponašaju više kao običan log.
S tim dizajnom, možete izvoziti i uvoziti spremljene datoteke putem običnih referenci., pošaljite ih ili dohvatite poput grana ili oznaka i sačuvajte nedovršeni rad u različitim okruženjima bez ad-hoc zakrpa ili tarballova.
Primjer radnog procesa za dijeljenje zaliha:
$ git stash export --to-ref refs/stashes/my-stash
$ git push origin refs/stashes/my-stash
# On another machine
$ git fetch origin '+refs/stashes/*:refs/stashes/*'
$ git stash import refs/stashes/my-stash
Ovaj pristup održava vaš rad na početku organiziranim i podložnim reviziji, posebno u postavkama na više uređaja ili prilikom predaje nedovršenog posla saigraču.
Oštrije vodovodne instalacije i svakodnevna ergonomija
cat-file postaje pametniji U batch načinima rada: kada bi se tražila putanja podmodula, verzije prije verzije 2.51 često su vraćale "nedostaje". Git 2.51 sada korisnije prijavljuje tip objekta (npr. "podmodul"), što pomaže skriptama kojima je potrebno razmišljati o sadržaju repozitorija u velikom obimu.
Bloom filteri s promijenjenom putanjom sada pomažu s višestrukim specifikacijama putanja (npr. git log -- a b), proširujući slučajeve u kojima prolaženje kroz historiju može pouzdano preskočiti commite. To je praktično povećanje brzine za uobičajene obrasce pregleda i istraživanja.
git switch i git restore prelaze iz eksperimentalne fazeUvedene kao jasnije, namjenski izgrađene alternative višestrukim ulogama git checkout, njihov CLI se sada smatra stabilnim u budućnosti.
Naredba "git whatchanged" je zastarjela i planirano za uklanjanje u Gitu 3.0. Ako se i dalje oslanjate na njega, ostaje ga moguće pozvati iza prikladno nazvanog --i-still-use-this označi dok migrirate na git log --raw.
Prema Gitu 3.0: podrazumijevane vrijednosti i promjene koje se mogu testirati
Projekat nastavlja pripreme za SHA-256 i reftable reference backend koji će postati podrazumijevani u Gitu 3.0.U Gitu 2.51, repozitoriji se i dalje kreiraju sa SHA-1 prema zadanim postavkama, ali više internih instalacija razumije SHA-256, što olakšava eksperimentisanje i integraciju.
Ako želite pregled sutrašnjih zadanih postavki, možete graditi sa WITH_BREAKING_CHANGES isprobati dolazna ponašanja u kontroliranim okruženjima. Pružatelji hostinga i autori alata mogu ovo koristiti za otkrivanje graničnih slučajeva prije velike promjene.
Dvostruki cilj ostaje jasanOjačati kriptografsku bazu i modernizirati reference, uz održavanje unatrag kompatibilnosti za ogroman ekosistem izgrađen na trenutnim pretpostavkama Gita.
Ažuriranja jezika i procesa
Što se tiče implementacije, usvajanje C99 se metodično nastavlja.Projekat sada dozvoljava bool ključna riječ u cijeloj kodnoj bazi i dokumentima koje C99 funkcije se koriste ili su u fazi evaluacije, imajući na umu prenosivost za široku matricu kompajlera.
Smjernice za doprinose dobile su inkluzivno ažuriranjeZakrpe se više ne moraju slati pod pravnim imenom saradnika, što Gitovu politiku više usklađuje s Linux kernelom i podržava saradnike koji preferiraju alternativne identitete.
Kako isprobati glavne funkcije danas
Omogućite MIDX strategiju bez nepotrebnih detalja za smanjenje indeksa višestrukih paketa i ubrzanje čitanja:
$ git config --global repack.MIDXMustContainCruft true
$ git gc --cruft --aggressive
Ponovno pakiranje uz šetnju stazom za procjenu razlika u veličini paketa i vremenu izvođenja:
$ git repack -ad
$ git pack-objects --path-walk --revs --stdout < .git/objects/pack/pack-list.txt > new.pack
Dijelite zalihe između mašina sa novim podnaredbama za izvoz/uvoz:
$ git stash export --to-ref refs/stashes/feature-wip
$ git push origin refs/stashes/feature-wip
Sve rečenoGit 2.51 je evolucijsko izdanje koje se isplati u svakodnevnoj upotrebi: brže i efikasnije upravljanje objektima; praktična poboljšanja za skriptiranje i upite historije; čistiji tijek rada sa spremljenim objektima; i stalan napredak prema eri Git 3.0 gdje SHA-256 i reftable postaju norma.
