Git 2.50: Ytelsesforbedringer for store repositorier og mer

git-2.50

For noen dager siden ble det annonsert Utgivelse av den nye versjonen av Git 2.50-prosjektet, introduserer mer enn 600 endringer drevet av et aktivt fellesskap som denne gangen inkluderte 98 utviklere, inkludert 35 nye bidragsytere.

Denne nye versjonen av Git 2.50 er fremhevet av integreringen av nye kommandoer (git-diff-pairs), nye funksjoner for rengjøring, filtrering og vedlikehold, erstatningen av den rekursive merge-motoren med ORT, samt ytelsesforbedringer og feilrettinger.

Git 2.50 Viktige nye funksjoner

I denne nye versjonen av Git 2.50 er en av de viktigste nye funksjonene optimalisering i behandlingen av såkalte «cruft packs», Det vil si pakker med objekter som er utilgjengelige eller ikke refereres til av grener eller tagger. Tradisjonelt lagret Git disse objektene i en enkelt, stor pakkefil, noe som kunne forårsake ytelsesproblemer ved ompakking av repositorier med mange av disse elementene.

Med den nye versjonen, Git lar deg dele disse cruft-pakkene i flere mindre filer, noe som reduserer diskbruk og forbedrer ytelsen for inndata/utdata for masseoperasjoner. I tillegg sog skriv inn alternativet –kombiner-cruft-under-størrelse, som tillater kombinere små pakker til én mer fleksibel enn det forrige alternativet –max-cruft-size, uten å sette en grense for den kombinerte filstørrelsen. Denne nye funksjonen er spesielt nyttig i prosjekter med foreldreløse objekter spredt over flere pakker.

En annen forbedring rettet mot storskala arkiver er eksperimentell støtte til den trinnvise oppdateringen av MIDX-indekser , hvilken De lagrer informasjon om objekter i separate lag ved hjelp av bitmap-filer, noe som gir raskere oppdateringer etter hvert som nye commits legges til. Denne forbedringen er kritisk for store datalagre som krever raske indekseringsoperasjoner uten å måtte bygge metadata fullstendig på nytt.

Fullstendig erstatning av den rekursive sammenslåingsmotoren med ORT

Git 2.50 introduserer en stor endring med permanent fjerning av den rekursive fusjonsmotoren tradisjonell. I stedet, bruken av ORT er konsolidert, Un en mer moderne, vedlikeholdbar og effektiv fusjonsmotor. ORT tilbyr ikke bare mer presis konfliktanalyse, men lar deg også bekrefte om en sammenslåing er mulig uten å generere flere objekter. Videre inkluderer merge-tree-kommandoen nå et –quiet-alternativ for bruk som en stille sammenslåingskontroll uten å endre depotet.

gitt-diff-par: løsningen på skalerbarhetsproblemer

Kodegjennomgang er utvilsomt en av grunnpilarene i moderne samarbeidende utvikling, og forskjeller eller avvik mellom revisjoner spiller en viktig rolle i denne prosessen. Med ankomsten av Git 2.50 har en løsning designet for skalerbarhet blitt introdusert: den nye git-diff-pairs-kommandoen.

Tradisjonelt sett bruker man en kommando som: for å sammenligne to revisjoner.

git diff HEAD~1 HEAD

Dette genererer en komplett oppdatering som inneholder alle endringer mellom de listede revisjonene. Selv om det er effektivt i mange tilfeller, kan det være et ytelsesproblem når man håndterer store sett med modifiserte filer.

Derfor ble git-diff-pairs spesielt utviklet for å motta rå input direkte fra outputen til git diff-tree, og generere de tilsvarende patchene effektivt og nøyaktig.

Bruken er så enkel som:

git diff-tree -r -z -M HEAD~ HEAD | git diff-pairs -z

Denne kommandoen tar de oppgitte blob-parene og genererer nøyaktig diff-utdata, bevarer kontekstuell informasjon og lar arbeidet deles inn i mindre grupper. Dette åpner døren for parallell prosessering, forbedrer ressurseffektiviteten og forenkler skalerbarhet i diff-baserte verktøy som GitLab.

Nye funksjoner for rengjøring, filtrering og vedlikehold

Git 2.50 inkluderer flere tilleggsverktøy som er utviklet for å forbedre vedlikehold av repositorier:

  • Kommandoen er lagt til git reflog drop, som lar deg slette rebloggen for en bestemt gren fullstendig, ideelt for å rydde opp i arbeidshistorikken din når du ikke lenger trenger å vedlikeholde tidligere referanser.
  • Alternativet -filter cat-file –batch er nå tilgjengelig i git, slik at du kan filtrere resultater etter objekttype.

I tillegg fremheves også flere interne optimaliseringer:

  • Forbedret bruk av symbolske lenker, med prefikslagring og reduksjon av overflødige sjekker.
  • Fjerning av Perl-avhengigheter i dokumentasjon og testskript, og erstatning av dem med skallfunksjoner eller C-implementeringer, noe som gjør dem enklere å kompilere på systemer med minimalistiske konfigurasjoner.
  • Inkludert en kontroller brukerdiff for analyse av forskjeller i .ini-filer.
  • Forbedret kompatibilitet mellom git send-email-kommandoen og SMTP-servere som Outlook.

Til slutt, hvis du er interessert i å vite mer om det, kan du se detaljene i følgende lenke.