Git 2.51 kommer med viktige ytelsesforbedringer og nye funksjoner

git 2.51

Etter to måneder med intenst arbeid, utviklingsmiljøet til Git introduserer Git versjon 2.51, en oppdatering som Den samler 506 endringer, hvor 91 utviklere deltok, hvorav 21 bidro for første gang.

Denne utgivelsen introduserer forbedringer som er utformet for å forbedre ytelsen og forenkle administrasjon av repositorier, inkludert ytelsesoptimaliseringer for git-push og git-fetch, samt flere endringer i retning av den nye 3.x-grenen.

Git 2.51 Viktige nye funksjoner

Et av høydepunktene i Git 2.51 er Optimalisering av git push- og git fetch-kommandoer i arkiver med et stort antall referanser. Nøkkelen til denne forbedringen ligger i batchoppdateringen, som behandler flere lenker i én transaksjon i stedet for individuelt.

Takket være denne optimaliseringen, Den reftable-baserte backend-en overgår nå den tradisjonelle fil-backend-en.I tester med repositorier som inneholder opptil 10 000 referanser, økte git fetch-ytelsen med 22 ganger for reftable og 1.25 ganger for filer, mens git push forbedret seg med henholdsvis 18 ganger og 1.21 ganger.

En annen viktig innovasjon er iIntroduksjon av såkalte cruft-pakker, designet for å lagre utilgjengelige objekter som ikke er koblet til grener eller tagger. Disse objektene, som tidligere var spredt, kan nå håndteres i separat emballasjes, noe som gjør dem enklere å kontrollere og reduserer størrelsen på flerpakkeindekser (MIDX).

Med ny repack.MIDXMustContainCruft-innstilling, Git unngår å inkludere disse objektene i hovedindekseneI tester på GitHub reduserte denne konfigurasjonen indeksstørrelsen med 38 %, akselererte skrivinger med 35 % og forbedret lesinger med 5 %.

Ny tilnærming til objektemballasje

El git pack-objects-kommandoen inneholder –path-walk-alternativet, som introduserer en innovativ metode å omorganisere pakkefiler. I stedet for å behandle objekter basert på hashene deres, kan Git nå iterere gjennom dem basert på filbanen deres, og pakke de som deler samme plassering sammen. Denne tilnærmingen eliminerer behovet for å forhåndssortere objekter og resulterer i mindre, mer effektiv pakking av filer.

Også med denne versjonen Et nytt format for utveksling av arbeidstretilstander og indekser laget med Git Stash har blitt standardisert.Det er nå mulig å eksportere og importere stashes akkurat som grener eller tagger, noe som gjør det enklere å flytte tilstander fra ett system til et annet.

For eksempel:

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

Forbedringer av klassiske kommandoer

Flere Git-kommandoer har mottatt relevante oppdateringer:

  • git cat-file rapporterer nå manglende objekter og undermoduler, og viser identifikatorer i stedet for bare å markere som «mangler».
  • git log drar nytte av Bloom-filteroptimaliseringer, noe som øker hastigheten på søk med flere filstier.
  • Kommandoene git switch og git restore, som har blitt ansett som eksperimentelle siden 2019, er endelig stabilisert som moderne alternativer til git checkout.
  • git whatchanged-kommandoen, som tilsvarer git log –raw, er utdatert og vil bli fjernet i Git 3.0.
  • git for-each-ref mottar –start-after-alternativet, som sammen med –count tillater paginering av utdataene.
  • git merge og git pull inkluderer nå alternativet –compact-summary, som gir et mer konsist sammendragsformat.

C99-støtte og nye bidragsregler

Git fortsetter å tilpasse koden sin til egenskapene til C9-standarden.9. Selv om en kompatibel kompilator har vært påkrevd siden 2021, beveger utviklere seg forsiktig for å opprettholde kompatibilitet med kompilatorer som bare delvis implementerer den.

I tillegg er det innført en betydelig endring i bidragspolitikken: Oppdateringer kan nå sendes inn under pseudonym, en avgjørelse i samsvar med reglene i Linux-kjernen og utformet for å gi bidragsytere større fleksibilitet.

Ser frem mot Git 3.0

El Utviklingsteamet har også oppdatert veikartet til Git 3.0., hvor to viktige endringer skiller seg ut: standardbruken av SHA-256 som objektidentifikator og innføringen av reftable-formatet for lagring av gren- og taggreferanser. Disse forbedringene har som mål å forbedre sikkerhet og effektivitet i stadig større og mer komplekse databaser.

Fuente: https://lore.kernel.org