Le projet Git open source a publié Git 2.56.0, avec les développements et corrections de bugs de plus de 104 contributeurs, dont 39 ont rejoint le projet pour la première fois. La version précédente était Git 2.55.
La nouvelle version propose l’option `git add –resolved`, qui permet de n’indexer que les chemins concernés lors de la résolution de conflits de fusion. Ce mode évalue les chemins non fusionnés dans le répertoire et vérifie, avant l’indexation, la présence de marqueurs de conflit restants dans les fichiers ordinaires. Si un marqueur est trouvé, il signale les chemins concernés et ne modifie pas l’index. Ainsi, les modifications locales sans rapport avec le conflit, comme celles de `notes.txt`, ne sont pas indexées, tandis que le fichier résolu `recipe.txt` peut l’être. La sélection peut être restreinte à l’aide d’un motif de chemin ; si l’un des fichiers sélectionnés contient un marqueur, aucun d’eux n’est indexé. Les suppressions résolues et les conflits binaires sont traités normalement. L’option ne peut pas être combinée avec `git add -u` ou `git add -A` et ignore les fichiers suivis qui n’étaient pas auparavant en conflit.
Git 2.56 accélère également les opérations qui recherchent des ancêtres communs. Git remonte l’historique à partir de deux points d’enregistrement afin de trouver les bases de fusion accessibles depuis les deux côtés. Comme les fusions criss-cross peuvent nécessiter plusieurs bases, la recherche se poursuit jusqu’à ce que toutes les bases soient déterminées. Le nouveau mécanisme de suivi détecte qu’aucun nouveau point commun ne peut apparaître lorsque les enregistrements en attente propres à l’un des côtés sont épuisés, puis arrête la recherche tout en conservant toutes les bases de fusion.
Pourquoi c’est important
Le nouveau mode de préparation permet aux développeurs confrontés à des conflits de fusion de mettre de côté les fichiers dont la résolution est terminée sans les mélanger aux modifications locales ; cela réduit le risque d’erreur, en particulier pour les équipes qui effectuent différentes modifications dans le même répertoire de travail. La vérification des marqueurs de conflit fournit un contrôle supplémentaire qui empêche de préparer par inadvertance du contenu inachevé à l’enregistrement. L’amélioration de la recherche d’ancêtres communs modifie quant à elle la manière dont Git accède aux informations historiques nécessaires dans les dépôts comportant des fusions à plusieurs branches et des fusions criss-cross. Ainsi, cette version ne se contente pas de proposer une nouvelle commande : elle cible également le comportement des opérations exécutées sur des historiques complexes. Toutefois, la mesure dans laquelle ces changements seront adoptés dans différents flux de travail et les dépôts dans lesquels le gain de performances sera perceptible restent incertaines.