Git 2.51 stiže sa MIDX-om bez cruftova, path-walk paketima, stash uvozom/izvozom i 3.0 osnovama

Posljednje ažuriranje: 08/21/2025
  • Novi indeksi višestrukih pakovanja bez oštećenja sa repack.MIDXMustContainCruft smanjite veličinu MIDX-a i ubrzajte čitanje.
  • Prepakivanje staze nakon šetnje (--path-walk) proizvodi manja pakovanja sa konkurentnim vremenom.
  • Format za razmjenu spremljenih podataka omogućava izvoz/uvoz spremljenih podataka kao referenci na različitim mašinama.
  • Napredak ka Gitu 3.0: SHA-256 i reftable podrazumijevane vrijednosti su označeni; poboljšanje korisničkog interfejsa i alata.

Vizuelni prikaz izdanja Git 2.51

Git 2.51 je izašao, donoseći širok set poboljšanja od više od 91 saradnika (uključujući 21 korisnika početnika) i kontinuirani napor za modernizaciju alata bez ometanja ustaljenih radnih procesa.

Ovo izdanje se fokusira na praktične nadogradnje— od skladištenja i pakovanja do upotrebljivosti i sigurnosnog stanja — dok se istovremeno pripremaju za promjene planirane za Git 3.0.

Indeksi višepakiranja bez cruft-free-a

Git pohranjuje podatke kao objekte (blobovi, stabla, commiti) bilo labavo ili unutar packfileova, s pack indeksima koji mapiraju hashove na offsete. Multi-pack indeksi (MIDX) omogućavaju Gitu da indeksira objekte u više packova, pretvarajući više pretraga u jednu O(log N) pretragu, a također omogućavaju bitmape dostupnosti za brze provjere zadržavanja.

Bora je bila oblozi za grubu kožu, gdje se nedostupni objekti nalaze izvan MIDX-a. Ako objekt koji je nekada bio nedostupan kasnije postane dostupan iz bitmapiranog commita, ali postoji samo u cruft packu, on nema bitnu poziciju - što blokira generiranje bitmape.

Git 2.51 mijenja ponašanje ponovnog pakovanja tako da prilikom generiranja novih ne-cruft paketa, duplicira objekte (i njihove pretke) čija se jedina druga kopija nalazi u cruft paketu. Ponavljanje ovoga osigurava da je ne-cruft skup zatvoren pod dostupnošću, omogućavajući konzistentnu pokrivenost bitmapom.

Nova konfiguracija ovo olakšava: repack.MIDXMustContainCruft Koristi ažuriranu logiku ponovnog pakovanja kako bi se cruft paketi zadržali izvan MIDX-a. U velikoj upotrebi, MIDX datoteke su se smanjile za oko 38%, brže su pisane za ~35% i poboljšale performanse čitanja za otprilike 5%.

Manji paketi sa šetnjom stazom

Git 2.49 je uveo bolji name-hash. za uređivanje redoslijeda objekata tokom delta selekcije, smanjujući oslanjanje na posljednjih 16 znakova putanje i uzimajući u obzir strukturu direktorija za pametnije uparivanje.

Git 2.51 ide dalje s novim načinom prikupljanja "path walk" za ponovno pakiranje. Umjesto striktnog emitiranja objekata po redoslijedu revizija, Git grupira i emitira sve objekte za datu putanju zajedno, zaobilazeći potrebu za heuristikom heša imena.

Rezultat su manje paketne datoteke sa poboljšanim delta mogućnostima među objektima iste putanje i vremenima koja su konkurentna klasičnom prolasku. Možete to isprobati s novim --path-walk opcija prilikom ponovnog pakovanja.

Pregled funkcija Gita 2.51

Format za razmjenu Stash-a

Ako koristite git stash često, znate da tradicionalno modelira svaki stash kao tri commita (pripremljeni, nepripremljeni i sintetički roditelj koji ih povezuje) pohranjena pod refs/stash, što otežava migraciju između mašina.

Git 2.51 dodaje lančanu reprezentaciju gdje svaki unos u skladište uključuje dodatno porijeklo koje se povezuje s prethodnim unosom u skladište, formirajući linearnu historiju koju je lakše premještati i upravljati njome.

Nove podkomande otključavaju prenosivostMožete izvesti spremljene datoteke u jednu referencu i prebaciti ih/povući kao bilo koju granu ili oznaku, a zatim ih uvesti na drugu mašinu.

Primjer radnog toka:

$ git stash export --to-ref refs/stashes/my-stash
$ git push origin refs/stashes/my-stash

$ git fetch origin '+refs/stashes/*:refs/stashes/*'
$ git stash import refs/stashes/my-stash

Bilješke o performansama za velike repozitorije

Ažuriranja referenci se bolje skaliraju u repozitorijima s vrlo velikim brojem referenci, zahvaljujući grupnim ažuriranjima koja smanjuju transakcijske troškove. U scenarijima s ~10,000 referenci, prijavljeni dobici uključuju dramatična ubrzanja - posebno s reftable backendom - kod operacija poput dohvaćanja i slanja.

Alati i UX poliranje

  • git cat-file je informativniji za putanje podmodula u --batch-check način rada, prijavljivajući unos podmodula umjesto samo "nedostaje".
  • Bloom filteri s promijenjenom putanjom sada pomažu s višestrukim specifikacijama putanja (npr. git log -- a b), proširujući doseg optimizacije.
  • git switch i git restore su stabilne i više se ne smatraju eksperimentalnim, učvršćujući njihove uloge kao jasnije alternative git checkout.
  • git whatchanged je zastarjelo i planirano za uklanjanje u Gitu 3.0; ostaje dostupno iza --i-still-use-this.
  • git for-each-ref dodaje paginaciju preko --start-after, poboljšavajući popis referenci u vrlo velikim repozitorijima.
  • Spajanje dobija uredniji sažetak sa --compact-summary za git merge i git pull.

Prema Gitu 3.0: sigurnosne i standardne postavke pohrane

Projekat nastavlja svoju tranziciju na SHA-256Iako novi repozitoriji i dalje po defaultu koriste SHA-1, više internih komponenti i transporta u verziji 2.51 razumije SHA-256, što olakšava eksperimentiranje i testiranje kompatibilnosti.

Reftable je na putu da postane zadani Reference backend u Gitu 3.0, rješavajući probleme osjetljivosti na velika i mala slova i Unicode nedostataka na Windowsu/macOS-u, omogućavajući atomske referenc transakcije i koristeći prednosti geometrijskog sažimanja i kompresije prefiksa.

Želite li pregled budućih zadanih postavki? Možete izgraditi Git sa WITH_BREAKING_CHANGES testirati nadolazeću osnovnu liniju (npr. SHA-256 i reftable defaults) prije izdanja 3.0.

Proces i standardi za razvojne programere

Upotreba C99 se širi: kodna baza sada uglavnom dozvoljava bool ključna riječ, a projekt dokumentira koje su C99 značajke usvojene ili se procjenjuju, balansirajući moderne jezičke značajke s prenosivošću.

Smjernice za doprinose se razvijaju kako bi se omogućilo slanje radova pod identitetima koji nisu legalno ime saradnika, što bi se bolje uskladilo s pristupom Linux kernela i smanjile prepreke za učešće.

git 2.51 spaja konkretne pobjede - poput MIDX-a bez nepotrebnih datoteka, path-walk paketa, uvoza/izvoza iz skladišta i poboljšanja performansi velikih repozitorija - sa stalnim napretkom ka jačoj kriptografiji i modernim podrazumijevanim postavkama pohrane, što pruža raznolika zajednica održavatelja i novih saradnika.

Slični postovi: