Efter två månaders intensivt arbete, utvecklingsgemenskapen för Git introducerar Git version 2.51, en uppdatering som Den sammanför 506 förändringar, i vilka 91 utvecklare deltog, varav 21 bidrog för första gången.
Den här utgåvan introducerar förbättringar utformade för att förbättra prestanda och förenkla hantering av arkiv, inklusive prestandaoptimeringar för git-push och git-fetch, samt flera förändringar mot den nya 3.x-grenen.
Git 2.51 Viktiga nya funktioner
En av höjdpunkterna i Git 2.51 är Optimera git push- och git fetch-kommandon i arkiv med ett stort antal referenser. Nyckeln till denna förbättring ligger i batchuppdateringen, som bearbetar flera länkar i en enda transaktion snarare än individuellt.
Tack vare denna optimering, Den reftable-bara backend-funktionen överträffar nu den traditionella fil-backend-funktionen.I tester med repositorier som innehåller upp till 10 000 referenser ökade git hämtningsprestanda med 22x för reftable och 1.25x för filer, medan git push förbättrades med 18x respektive 1.21x.
En annan viktig innovation är iIntroduktion av så kallade cruft-paket, utformad för att lagra oåtkomliga objekt som inte är länkade till grenar eller taggar. Dessa objekt, som tidigare var utspridda, kan nu hanteras i separata förpackningars, vilket gör dem enklare att kontrollera och minskar storleken på multipaketindex (MIDX).
Med ny repack.MIDXMustContainCruft-inställning, Git undviker att inkludera dessa objekt i huvudindexenI tester på GitHub minskade den här konfigurationen indexstorleken med 38 %, accelererade skrivningar med 35 % och förbättrade läsningar med 5 %.
Ny metod för objektförpackning
El git pack-objects-kommandot innehåller alternativet –path-walk, som introducerar en innovativ metod att omorganisera förpackningsfiler. Istället för att bearbeta objekt baserat på deras hashvärden kan Git nu iterera igenom dem baserat på deras sökväg och packa de som delar samma plats tillsammans. Denna metod eliminerar behovet av att försortera objekt och resulterar i mindre, mer effektiva filer.
Även med denna version Ett nytt format för utbyte av arbetsträdtillstånd och index skapade med Git Stash har standardiserats.Det är nu möjligt att exportera och importera stashes precis som grenar eller taggar, vilket gör det enklare att flytta tillstånd från ett system till ett annat.
Till exempel:
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
Förbättringar av klassiska kommandon
Flera Git-kommandon har fått relevanta uppdateringar:
- git cat-file rapporterar nu saknade objekt och undermoduler, och visar identifierare istället för att bara markera som "saknas".
- git log drar nytta av Bloom-filteroptimeringar, vilket snabbar upp sökningar med flera filsökvägar.
- Kommandona git switch och git restore, som ansetts vara experimentella sedan 2019, har äntligen stabiliserats som moderna alternativ till git checkout.
- Kommandot git whatchanged, motsvarande git log –raw, är föråldrat och kommer att tas bort i Git 3.0.
- git for-each-ref tar emot alternativet –start-after, vilket tillsammans med –count tillåter paginering av utdata.
- git merge och git pull inkluderar nu alternativet –compact-summary, vilket ger ett mer koncist sammanfattningsformat.
C99-stöd och nya bidragsregler
Git fortsätter att anpassa sin kod till C9-standardens egenskaper.9. Även om en kompatibel kompilator krävs sedan 2021, agerar utvecklare försiktigt för att upprätthålla kompatibilitet med kompilatorer som bara delvis implementerar den.
Dessutom har en betydande förändring införts i bidragspolicyn: Patchar kan nu skickas in under pseudonym, ett beslut i linje med reglerna för Linuxkärnan och utformat för att erbjuda större flexibilitet för bidragsgivare.
Ser fram emot Git 3.0
El Utvecklingsteamet har också uppdaterat färdplanen till Git 3.0., där två viktiga förändringar sticker ut: standardanvändningen av SHA-256 som objektidentifierare och införandet av reftable-formatet för att lagra gren- och taggreferenser. Dessa förbättringar syftar till att förbättra säkerhet och effektivitet i allt större och mer komplexa arkiv.
Fuente: https://lore.kernel.org