Efter to måneders intenst arbejde, udviklingsfællesskabet for Git introducerer Git version 2.51, en opdatering, der Den samler 506 ændringer, hvori 91 udviklere deltog, hvoraf 21 bidrog for første gang.
Denne udgivelse introducerer forbedringer designet til at forbedre ydeevnen og forenkle administration af arkiver, herunder ydeevneoptimeringer for git-push og git-fetch, samt adskillige ændringer i retning af den nye 3.x-gren.
Git 2.51 Nøgle nye funktioner
Et af højdepunkterne i Git 2.51 er Optimering af git push- og git fetch-kommandoer i arkiver med et stort antal referencer. Nøglen til denne forbedring ligger i batchopdateringen, som behandler flere links i en enkelt transaktion i stedet for individuelt.
Takket være denne optimering, Den reftable-baserede backend overgår nu den traditionelle fil-backend.I tests med arkiver, der indeholder op til 10 referencer, steg git fetch-ydeevnen med 000x for reftable og 22x for filer, mens git push forbedredes med henholdsvis 1.25x og 18x.
En anden vigtig innovation er iIntroduktion af såkaldte cruft-pakker, designet til at gemme utilgængelige objekter, der ikke er knyttet til grene eller tags. Disse objekter, som tidligere var spredt, kan nu håndteres i separat emballages, hvilket gør dem nemmere at kontrollere og reducerer størrelsen af multipakkeindekser (MIDX).
Med ny repack.MIDXMustContainCruft-indstilling, Git undgår at inkludere disse objekter i hovedindekserneI tests på GitHub reducerede denne konfiguration indeksstørrelsen med 38%, accelererede skrivninger med 35% og forbedrede læsninger med 5%.
Ny tilgang til objektemballage
El git pack-objects-kommandoen inkorporerer –path-walk-indstillingen, som introducerer en innovativ metode at omorganisere pakkefiler. I stedet for at behandle objekter baseret på deres hashes, kan Git nu iterere gennem dem baseret på deres filsti og pakke dem, der deler den samme placering, sammen. Denne tilgang eliminerer behovet for at sortere objekter på forhånd og resulterer i mindre og mere effektive pakkefiler.
Også med denne version Et nyt format til udveksling af arbejdstrætilstande og indekser oprettet med Git Stash er blevet standardiseret.Det er nu muligt at eksportere og importere stashes ligesom branches eller tags, hvilket gør det nemmere at flytte tilstande fra ét system til et andet.
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 af klassiske kommandoer
Adskillige Git-kommandoer har modtaget relevante opdateringer:
- git cat-file rapporterer nu manglende objekter og undermoduler og viser identifikatorer i stedet for blot at markere dem som "manglende".
- git log drager fordel af Bloom-filteroptimeringer, hvilket fremskynder søgninger med flere filstier.
- Kommandoerne git switch og git restore, der har været betragtet som eksperimentelle siden 2019, er endelig blevet stabiliseret som moderne alternativer til git checkout.
- Kommandoen `git whatchanged`, svarende til `git log –raw`, er udfaset og vil blive fjernet i Git 3.0.
- git for-each-ref modtager –start-after-indstillingen, som sammen med –count tillader paginering af outputtet.
- git merge og git pull inkluderer nu –compact-summary-indstillingen, som giver et mere præcist opsummeringsformat.
C99-støtte og nye bidragsregler
Git fortsætter med at tilpasse sin kode til C9-standardens egenskaber.9. Selvom en kompatibel compiler har været påkrævet siden 2021, bevæger udviklere sig forsigtigt for at opretholde kompatibilitet med compilere, der kun delvist implementerer den.
Derudover er der indført en væsentlig ændring i bidragspolitikken: Programrettelser kan nu indsendes under pseudonym, en beslutning, der er i overensstemmelse med reglerne i Linux-kernen og designet til at give bidragydere større fleksibilitet.
Ser frem til Git 3.0
El Udviklingsteamet har også opdateret køreplanen til Git 3.0., hvor to centrale ændringer skiller sig ud: standardbrugen af SHA-256 som objektidentifikator og indførelsen af reftable-formatet til lagring af branch- og tagreferencer. Disse forbedringer har til formål at forbedre sikkerhed og effektivitet i stadigt større og mere komplekse arkiver.
kilde: https://lore.kernel.org