Git 2.50: Ydeevneforbedringer for store repositorier og mere

git-2.50

For et par dage siden blev det annonceret Udgivelse af den nye version af Git 2.50-projektet, introducerer mere end 600 ændringer drevet af et aktivt fællesskab, der denne gang omfattede 98 udviklere, herunder 35 nye bidragydere.

Denne nye version af Git 2.50 er fremhævet ved integrationen af ​​nye kommandoer (git-diff-pairs), nye funktioner til oprydning, filtrering og vedligeholdelse, udskiftningen af ​​den rekursive merge-motor med ORT, samt forbedringer af ydeevnen og fejlrettelser.

Git 2.50 Nøgle nye funktioner

I denne nye version af Git 2.50 er en af ​​de vigtigste nye funktioner optimering i behandlingen af ​​såkaldte "cruft packs", Det vil sige pakker med objekter, der er utilgængelige eller ikke refereres til af branches eller tags. Traditionelt gemte Git disse objekter i en enkelt, stor pakkefil, hvilket kunne forårsage ydeevneproblemer ved ompakning af arkiver med mange af disse elementer.

Med den nye version, Git giver dig mulighed for at opdele disse cruft-pakker i flere mindre filer., hvilket reducerer diskforbruget og forbedrer input/output-ydeevnen for bulk-operationer. Derudover sog indtast indstillingen –combine-cruft-below-size, som tillader kombinere små pakker til én mere fleksibelt end den tidligere –max-cruft-size-indstilling, uden at sætte en grænse for den kombinerede filstørrelse. Denne nye funktion er især nyttig i projekter med forældreløse objekter spredt over flere pakker.

En anden forbedring rettet mod store arkiver er eksperimentel støtte til den trinvise opdatering af MIDX-indekser , hvilken De lagrer information om objekter i separate lag ved hjælp af bitmap-filer, hvilket muliggør hurtigere opdateringer, når nye commits tilføjes. Denne forbedring er afgørende for store arkiver, der kræver hurtige indekseringsoperationer uden at skulle genopbygge metadata fuldstændigt.

Fuldstændig udskiftning af den rekursive merge-motor med ORT

Git 2.50 introducerer en større ændring med permanent fjernelse af den rekursive fusionsmotor traditionel. I stedet, brugen af ​​ORT konsolideres, har en en mere moderne, vedligeholdelsesvenlig og effektiv fusionsmotor. ORT tilbyder ikke blot mere præcis konfliktanalyse, men giver dig også mulighed for at verificere, om en merge er mulig uden at generere yderligere objekter. Derudover inkluderer merge-tree-kommandoen nu en –quiet-indstilling til brug som en lydløs merge-tjekker uden at ændre arkivet.

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

Kodegennemgang er uden tvivl en af ​​grundpillerne i moderne samarbejdsbaseret udvikling, og forskelle eller uoverensstemmelser mellem revisioner spiller en vigtig rolle i denne proces. Med ankomsten af ​​Git 2.50 er en løsning designet til skalerbarhed blevet introduceret: den nye git-diff-pairs-kommando.

Traditionelt set bruger man en kommando som: for at sammenligne to revisioner.

git diff HEAD~1 HEAD

Dette genererer en komplet programrettelse, der indeholder alle ændringer mellem de anførte revisioner. Selvom det er effektivt i mange tilfælde, kan det være et ydeevneproblem, når man håndterer store sæt af ændrede filer.

Derfor blev git-diff-pairs specifikt designet til at modtage rå input direkte fra outputtet fra git diff-tree og generere de tilsvarende patches effektivt og præcist.

Brugen er så simpel som:

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

Denne kommando tager de angivne blob-par og genererer det nøjagtige diff-output, bevarer kontekstuelle oplysninger og gør det muligt at opdele arbejdet i mindre batches. Dette åbner døren for parallel behandling, forbedrer ressourceeffektiviteten og letter skalerbarhed i diff-baserede værktøjer som GitLab.

Nye funktioner til rengøring, filtrering og vedligeholdelse

Git 2.50 indeholder adskillige yderligere værktøjer designet til at forbedre vedligeholdelse af repositories:

  • Kommandoen er blevet tilføjet git reflog drop, som giver dig mulighed for helt at slette refloggen for en bestemt gren, ideelt til at rydde op i din arbejdshistorik, når du ikke længere har brug for at vedligeholde tidligere referencer.
  • Valget -filter cat-file –batch er nu tilgængelig i git, hvilket giver dig mulighed for at filtrere resultater efter objekttype.

Derudover fremhæves flere interne optimeringer:

  • Forbedret brug af symbolske links, med præfiks-caching og reduktion af redundante kontroller.
  • Fjernelse af Perl-afhængigheder i dokumentation og testscripts, og erstatning af dem med shell-funktioner eller C-implementeringer, hvilket gør dem nemmere at kompilere på systemer med minimalistiske konfigurationer.
  • Inklusive en controller brugerdiff til analyse af forskelle i .ini-filer.
  • Forbedret kompatibilitet mellem git send-email-kommandoen og SMTP-servere som f.eks. Outlook.

Endelig, hvis du er interesseret i at vide mere om det, kan du konsultere detaljerne i følgende link.