Na twee maanden intensief werk heeft de ontwikkelingsgemeenschap van Git introduceert Git versie 2.51, een update die Het brengt 506 wijzigingen samen, waaraan 91 ontwikkelaars hebben deelgenomen, waarvan er 21 voor het eerst een bijdrage leverden.
Deze release introduceert verbeteringen die zijn ontworpen om de prestaties te verbeteren en het beheer van repositories te vereenvoudigen, waaronder prestatie-optimalisaties voor git-push en git-fetch, evenals verschillende wijzigingen met betrekking tot de nieuwe 3.x-branch.
Git 2.51 hoogtepunten
Een van de hoogtepunten van Git 2.51 is de Optimaliseren van git push- en git fetch-opdrachten in repositories met een groot aantal referenties. De sleutel tot deze verbetering ligt in de batch-update, die meerdere links in één enkele transactie verwerkt in plaats van afzonderlijk.
Dankzij deze optimalisatie, De reftable-backend presteert nu beter dan de traditionele bestanden-backend.Bij testen met repositories met maximaal 10 referenties nam de prestatie van git fetch met 000x toe voor reftable en 22x voor bestanden, terwijl de prestatie van git push respectievelijk met 1.25x en 18x verbeterde.
Een andere belangrijke innovatie is de iIntroductie van zogenaamde cruft-pakketten, Ontworpen om ontoegankelijke objecten op te slaan die niet gekoppeld zijn aan branches of tags. Deze objecten, die voorheen verspreid waren, kan nu in aparte verpakkingen worden beheerds, waardoor ze gemakkelijker te beheren zijn en de grootte van multi-package indexes (MIDX) wordt verkleind.
Met nieuwe repack.MIDXMustContainCruft-instelling, Git vermijdt het opnemen van deze objecten in de hoofdindexenUit tests op GitHub bleek dat deze configuratie de indexgrootte met 38% verkleinde, het schrijfproces met 35% versnelde en het leesproces met 5% verbeterde.
Nieuwe benadering van objectverpakking
El De opdracht git pack-objects bevat de optie –path-walk, die een innovatieve methode introduceert om verpakkingsbestanden te reorganiseren. In plaats van objecten te verwerken op basis van hun hashes, kan Git ze nu itereren op basis van hun bestandspad, waarbij objecten die dezelfde locatie delen, samen worden ingepakt. Deze aanpak elimineert de noodzaak om objecten vooraf te sorteren en resulteert in kleinere, efficiëntere inpakbestanden.
Ook bij deze versie Er is een nieuw formaat gestandaardiseerd voor het uitwisselen van werkende boomstatussen en indexen die met Git Stash zijn gemaakt.Het is nu mogelijk om stashes te exporteren en importeren, net als branches of tags. Hierdoor is het eenvoudiger om staten van het ene systeem naar het andere te verplaatsen.
Bijvoorbeeld:
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
Verbeteringen aan klassieke commando's
Verscheidene Git-opdrachten hebben relevante updates ontvangen:
- git cat-file rapporteert nu ontbrekende objecten en submodules, waarbij identificatiegegevens worden weergegeven in plaats van alleen het markeren als 'ontbrekend'.
- git log profiteert van de optimalisatie van het Bloom-filter, waardoor zoekopdrachten met meerdere bestandspaden sneller verlopen.
- De opdrachten git switch en git restore, die sinds 2019 als experimenteel worden beschouwd, zijn eindelijk gestabiliseerd als moderne alternatieven voor git checkout.
- De opdracht git whatchanged, gelijkwaardig aan git log –raw, is verouderd en zal in Git 3.0 worden verwijderd.
- git for-each-ref ontvangt de optie –start-after, die samen met –count paginering van de uitvoer mogelijk maakt.
- git merge en git pull bevatten nu de optie –compact-summary, die een bondiger samenvattingsformaat biedt.
C99-ondersteuning en nieuwe bijdrageregels
Git blijft zijn code aanpassen aan de kenmerken van de C9-standaard9. Hoewel een compatibele compiler sinds 2021 vereist is, zijn ontwikkelaars voorzichtig om compatibiliteit te behouden met compilers die deze compiler slechts gedeeltelijk implementeren.
Daarnaast is er een belangrijke wijziging in het bijdragebeleid doorgevoerd: Patches kunnen nu onder een pseudoniem worden ingediend, een beslissing die in lijn is met de regels van de Linux-kernel en die bedoeld is om bijdragers meer flexibiliteit te bieden.
Vooruitblik op Git 3.0
El Het ontwikkelteam heeft ook de roadmap naar Git 3.0 bijgewerkt., waarbij twee belangrijke wijzigingen opvallen: het standaardgebruik van SHA-256 als object-ID en de invoering van het reftable-formaat voor het opslaan van branch- en tagreferenties. Deze verbeteringen zijn gericht op het verbeteren van de beveiliging en efficiëntie in steeds grotere en complexere repositories.
bron: https://lore.kernel.org