Git 2.37

Par:
fredericmazue

mer, 24/08/2022 - 11:16

Le projet open source Git vient de publier Git 2.37, qui apporte des fonctionnalités et des corrections de bogues venant de plus de 75 contributeurs, dont 20 nouveaux.

Notamment cette version apporte un nouveau mécanisme pour élagueur les objets inaccessibles. Ainsi Git 2.37 introduit un nouveau concept,cruft packs, qui permet de stocker ensemble des objets inaccessibles dans un seul packfile en écrivant l'âge des objets individuels dans une table auxiliaire stockée dans un fichier *.mtimes à côté du pack.

Les packs cruft permettent aux référentiels de s'élaguer avec une période de grâce beaucoup plus longue, sans se soucier de la possibilité de créer de nombreux objets lâches. Pour l'essayer vous-même, vous pouvez exécuter:

$ git gc --cruft --prune=1.day.ago

Git 2.37 vient encore avec un moniteur de système de fichiers intégré pour Windows et macOS. Un des facteurs ayant un impact significatif sur les performances de Git est la taille de votre répertoire de travail. Lorsque vous exécutez git status, par exemple, Git doit explorer l'intégralité de votre répertoire de travail (dans le pire des cas) afin de déterminer quels fichiers ont été modifiés.

Git a sa propre compréhension en cache du système de fichiers pour éviter cette traversée de répertoires entiers dans de nombreux cas. Mais il peut être coûteux pour Git de mettre à jour sa compréhension en cache du système de fichiers avec l'état réel du disque pendant que vous travaillez.

Dans le passé, Git a rendu possible l'intégration avec des outils comme Watchmanviaun hook, permettant de remplacer le processus de rafraîchissement coûteux de Git par un démon de longue durée qui suit plus directement l'état du système de fichiers.

Mais la configuration de ce hook et l'installation d'un outil tiers peuvent être fastidieuses. Dans Git 2.37, cette fonctionnalité est intégrée à Git lui-même sous Windows et macOS, supprimant la nécessité d'installer un outil externe et de configurer le crochet.

Vous pouvez l'activer pour votre référentiel en activant le paramètre de configuration core.fsmonitor.

$ git config core.fsmonitor true