Git 2.51 arrive avec des améliorations de performances clés et de nouvelles fonctionnalités

git2.51

Après deux mois de travail intense, la communauté de développement de Git présente la version 2.51 de Git, une mise à jour qui Il rassemble 506 changements, auxquels ont participé 91 développeurs, dont 21 ont contribué pour la première fois.

Cette version introduit des améliorations conçues pour améliorer les performances et simplifier la gestion du référentiel, notamment des optimisations de performances pour git-push et git-fetch, ainsi que plusieurs changements vers la nouvelle branche 3.x.

Points forts de Git 2.51

L’un des points forts de Git 2.51 est le Optimisation des commandes git push et git fetch dans des référentiels avec un grand nombre de références. La clé de cette amélioration réside dans la mise à jour par lots, qui traite plusieurs liens dans une seule transaction plutôt qu'individuellement.

Grâce à cette optimisation, Le backend reftable surpasse désormais le backend de fichiers traditionnel.Lors de tests avec des référentiels contenant jusqu'à 10 000 références, les performances de git fetch ont été augmentées de 22x pour reftable et de 1.25x pour les fichiers, tandis que git push s'est amélioré de 18x et 1.21x, respectivement.

Une autre innovation importante est le iIntroduction de ce que l'on appelle des packages de cruft, Conçu pour stocker des objets inaccessibles, non liés à des branches ou des balises. Ces objets, auparavant dispersés, peut désormais être géré dans un emballage séparés, ce qui les rend plus faciles à contrôler et réduit la taille des index multi-packages (MIDX).

Avec nouveau paramètre repack.MIDXMustContainCruft, Git évite d'inclure ces objets dans les index principauxLors des tests sur GitHub, cette configuration a réduit la taille de l'index de 38 %, accéléré les écritures de 35 % et amélioré les lectures de 5 %.

Nouvelle approche du packaging d'objets

El la commande git pack-objects intègre l'option –path-walk, qui introduit une méthode innovante pour réorganiser les fichiers d'emballage. Au lieu de traiter les objets en fonction de leurs hachages, Git peut désormais les parcourir en fonction de leur chemin d'accès, en regroupant ceux qui partagent le même emplacement. Cette approche élimine le besoin de pré-trier les objets et permet d'obtenir des fichiers de compression plus petits et plus efficaces.

Avec cette version aussi Un nouveau format d'échange d'états d'arbres de travail et d'index créés avec Git Stash a été standardisé.Il est désormais possible d'exporter et d'importer des réserves comme des branches ou des balises, ce qui facilite le déplacement des états d'un système à un autre.

Par exemple:

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

Améliorations des commandes classiques

Plusieurs Les commandes Git ont reçu des mises à jour pertinentes:

  • git cat-file signale désormais les objets et sous-modules manquants, en affichant les identifiants au lieu de simplement marquer « manquant ».
  • git log bénéficie des optimisations du filtre Bloom, accélérant les recherches avec plusieurs chemins de fichiers.
  • Les commandes git switch et git restore, considérées comme expérimentales depuis 2019, sont enfin stabilisées comme des alternatives modernes à git checkout.
  • La commande git whatchanged, équivalente à git log –raw, est obsolète et sera supprimée dans Git 3.0.
  • git for-each-ref reçoit l'option –start-after, qui avec –count permet la pagination de la sortie.
  • git merge et git pull incluent désormais l'option –compact-summary, qui fournit un format de résumé plus concis.

Prise en charge du C99 et nouvelles règles de contribution

Git continue d'adapter son code aux caractéristiques de la norme C99. Bien qu'un compilateur compatible soit requis depuis 2021, les développeurs agissent avec prudence pour maintenir la compatibilité avec les compilateurs qui ne l'implémentent que partiellement.

En outre, un changement important a été introduit dans la politique de contribution : Les correctifs peuvent désormais être soumis sous un pseudonyme, une décision alignée sur les règles du noyau Linux et conçue pour offrir une plus grande flexibilité aux contributeurs.

En attendant Git 3.0

El L'équipe de développement a également mis à jour la feuille de route vers Git 3.0., où deux changements majeurs se démarquent : l'utilisation par défaut de SHA-256 comme identifiant d'objet et l'adoption du format reftable pour le stockage des références de branches et de balises. Ces améliorations visent à améliorer la sécurité et l'efficacité dans des référentiels de plus en plus volumineux et complexes.

source: https://lore.kernel.org