Git 2.37 est déjà sorti et voici ses actualités

Le lancement de la nouvelle version de Git 2.37, qui est l'un des systèmes de contrôle de version les plus populaires, logiciel fiable et performant qui fournit des outils de développement non linéaires flexibles basés sur des forks et des fusions de forks.

Pour assurer l'intégrité de l'historique et la résistance aux changements, le hachage implicite "en arrière" de tout l'historique précédent est utilisé sur chaque commit, il est également possible de vérifier les signatures numériques des développeurs de balises et de commits individuels.

Points forts de Git 2.37

Par rapport à la version précédente, 395 modifications ont été acceptées dans la nouvelle version, préparé avec la participation de 75 développeurs, dont 20 ont participé au développement pour la première fois.

Dans cette nouvelle version, il est souligné que le mécanisme des indices partiels (sparse index), qui ne couvre qu'une partie du référentiel, se a été préparé pour une utilisation généralisée. Les index partiels peuvent améliorer les performances et économiser de l'espace dans les référentiels qui effectuent des opérations de clonage partiel (extraction fragmentée) ou fonctionnent sur une copie incomplète du référentiel.

La nouvelle version achève le travail de intégration des index partiels dans les commandes "git show", "git sparse-checkout" et "git stash". Le gain de performances le plus notable de l'utilisation d'index partiels se trouve dans la commande "git stash", qui est jusqu'à 80 % plus rapide dans certaines situations.

Un autre changement qui ressort est que un nouveau mécanisme de « cruft packs » a été mis en place pour empaqueter des objets inaccessibles qui ne sont pas référencés dans le référentiel (non référencés par des branches ou des balises). Le ramasse-miettes supprime les objets inaccessibles, mais ils restent dans le référentiel pendant un certain temps avant de les supprimer pour éviter les conditions de concurrence. Pour suivre la période des objets inaccessibles, une liaison est requise, ils sont étiquetés avec l'heure de modification d'objets similaires, ce qui ne permet pas de les stocker dans un fichier bundle, dans lequel tous les objets ont une heure de modification commune.

En sauvegardant chaque objet précédemment utilisé dans un fichier séparé, le fichier posait des problèmes en présence d'un grand nombre de nouveaux objets inaccessibles, pas encore. Le mécanisme "cruft packs" proposé permet de stocker tous les objets inaccessibles dans un fichier bundle, et les données sur l'heure de modification de chaque objet sont reflétées dans une table séparée stockée dans un fichier avec l'extension ".mtimes".

Pour Windows et macOS, il existe un mécanisme intégré pour suivre les modifications apportées au système de fichiers, ce qui élimine le besoin de répertorier l'intégralité du répertoire de travail lors de l'exécution d'opérations telles que "git status". Auparavant, pour suivre les modifications via des crochets, vous pouviez connecter des utilitaires de suivi des modifications du système de fichiers externes, tels que Watchman, mais cela nécessitait l'installation de programmes et de configurations supplémentaires. Cette fonctionnalité est maintenant intégrée et peut être activée avec "git config core.fsmonitor true".

La commande "git sparse-checkout" a abandonné la prise en charge d'une alternative au mode "--cone" définition de modèle pour le clonage partiel, qui permet, lors de la définition de la partie du référentiel soumise à l'opération de clonage, de lister les fichiers individuels en utilisant la syntaxe ".gitignore", qui ne permet pas d'optimiser les index partiels.

Des autres changements qui se démarquent:

  • Flexibilité améliorée dans la configuration de l'appel fsync() pour vider les modifications sur le disque.
  • Ajout de la prise en charge de la stratégie de synchronisation "batch" au paramètre "core.fsyncMethod", qui accélère le travail lors de l'écriture d'un grand nombre de fichiers séparés en accumulant les modifications dans le cache de réécriture vidé par un seul appel fsync().
  • Les commandes de parcours telles que "git log" et "git rev-list" ont désormais l'option "-since-as-filter=X" pour filtrer les informations sur les commits antérieurs à "X".
  • Dans la commande "git remote", la spécification de l'indicateur "-v" fournit des informations sur les clones partiels du référentiel.
  • Ajout du paramètre "transfer.credentialsInUrl", qui peut prendre les valeurs "warn", "die" et "allow". Si le paramètre « remote. .url" spécifie les informations d'identification en texte brut, une tentative d'exécution d'opérations "get" ou "push" échouera si le paramètre "transfer.credentialsInUrl" est défini sur "die", ou un avertissement s'il est défini sur "warn" .
  • Par défaut, la nouvelle implémentation en mode interactif de la commande "git add -i", réécrite de Perl en C, est utilisée.

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


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.