Git 2.50 : améliorations des performances pour les grands dépôts et plus encore

git-2.50

Il y a quelques jours, il a été annoncé Sortie de la nouvelle version du projet Git 2.50, introduisant plus de 600 changements porté par une communauté active qui comprenait cette fois 98 développeurs, dont 35 nouveaux contributeurs.

Cette nouvelle version de Git 2.50 se distingue par l'intégration de nouvelles commandes (git-diff-pairs), de nouvelles fonctions de nettoyage, de filtrage et de maintenance, le remplacement du moteur de fusion récursif par ORT, ainsi que des améliorations de performances et des corrections de bugs.

Points forts de Git 2.50

Dans cette nouvelle version de Git 2.50, l’une des nouvelles fonctionnalités les plus importantes est la optimisation dans le traitement des « cruft packs », Il s'agit de paquets d'objets inaccessibles ou non référencés par des branches ou des balises. Traditionnellement, Git stockait ces objets dans un seul fichier de paquet volumineux, ce qui pouvait entraîner des problèmes de performances lors du repackage de dépôts contenant un grand nombre de ces éléments.

Avec la nouvelle version, Git vous permet de diviser ces packs de cruft en plusieurs fichiers plus petits, ce qui réduit l'utilisation du disque et améliore les performances d'entrée/sortie pour les opérations en masse. De plus,et entrez l'option –combine-cruft-below-sizePermettre combiner de petits paquets en un seul de manière plus flexible que l'option précédente –max-cruft-size, sans imposer de limite à la taille combinée des fichiers. Cette nouvelle fonctionnalité est particulièrement utile pour les projets comportant des objets orphelins répartis sur plusieurs packages.

Une autre amélioration visant les dépôts à grande échelle est la un soutien expérimental pour la mise à jour incrémentielle de Indices MIDX , lesquels Ils stockent des informations sur les objets dans des couches séparées L'utilisation de fichiers bitmap permet des mises à jour plus rapides à mesure que de nouveaux commits sont ajoutés. Cette avancée est essentielle pour les grands dépôts nécessitant des opérations d'indexation rapides sans avoir à reconstruire entièrement les métadonnées.

Remplacement complet du moteur de fusion récursive par ORT

Git 2.50 introduit un changement majeur avec le suppression définitive du moteur de fusion récursive traditionnel. Au lieu de cela, l'utilisation de l'ORT est consolidéeune moteur à fusion plus moderne, plus facile à entretenir et plus efficace. ORT offre non seulement une analyse plus précise des conflits, mais permet également de vérifier si une fusion est possible sans générer d'objets supplémentaires. De plus, la commande merge-tree inclut désormais une option –quiet permettant de vérifier une fusion silencieuse sans modifier le référentiel.

gitt-diff-pairs : la solution aux problèmes d'évolutivité

La revue de code est sans conteste l'un des piliers du développement collaboratif moderne, et les différences entre les révisions jouent un rôle important dans ce processus. Avec l'arrivée de Git 2.50, une solution conçue pour l'évolutivité a été introduite : la nouvelle commande git-diff-pairs.

Traditionnellement, pour obtenir une comparaison entre deux révisions, vous utilisez une commande comme :

git diff HEAD~1 HEAD

Cela génère un correctif complet contenant toutes les modifications entre les révisions répertoriées. Bien qu'efficace dans de nombreux cas, cela peut entraîner des problèmes de performances lors du traitement de grands ensembles de fichiers modifiés.

C'est pourquoi git-diff-pairs a été spécifiquement conçu pour recevoir des entrées brutes directement à partir de la sortie de git diff-tree et générer les correctifs correspondants de manière efficace et précise.

L'utilisation est aussi simple que :

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

Cette commande prend les paires de blobs fournies et génère la sortie de comparaison exacte, préservant ainsi les informations contextuelles et permettant de diviser le travail en lots plus petits. Cela ouvre la voie au traitement parallèle, améliore l'efficacité des ressources et facilite l'évolutivité des outils de comparaison comme GitLab.

Nouvelles fonctionnalités pour le nettoyage, le filtrage et la maintenance

Git 2.50 inclut plusieurs outils supplémentaires conçus pour améliorer la maintenance du référentiel :

  • La commande a été ajoutée git reflog drop, qui vous permet de supprimer complètement le reflog d'une branche spécifique, idéal pour nettoyer votre historique de travail lorsque vous n'avez plus besoin de conserver les références précédentes.
  • Le choix -filtre cat-file –batch est désormais disponible dans git, vous permettant de filtrer les résultats par type d'objet.

De plus, plusieurs optimisations internes sont également mises en évidence :

  • Utilisation améliorée des liens symboliques, avec mise en cache des préfixes et réduction des contrôles redondants.
  • Suppression des dépendances Perl dans la documentation et les scripts de test, en les remplaçant par des fonctions shell ou des implémentations C, les rendant plus faciles à compiler sur des systèmes avec des configurations minimalistes.
  • Y compris un contrôleur userdiff pour l'analyse des différences dans les fichiers .ini.
  • Compatibilité améliorée de la commande git send-email avec les serveurs SMTP tels qu'Outlook.

Enfin, si vous souhaitez en savoir plus, vous pouvez consulter les détails dans le lien suivant