Si vous utilisez --color-words[=]
, assurez-vous d'utiliser Git 2.32 (Q2 2021) ou plus récent : le mode word-diff a été amélioré pour fonctionner correctement avec une expression régulière de mot qui peut correspondre à une chaîne vide.
Voir commit 0324e8f (04 mai 2021) par Phillip Wood (phillipwood
).
(Fusionné par Junio C Hamano -- gitster
-- dans commit 65c1891, 14 mai 2021)
word diff
: gérer les correspondances de longueur zéro
Signé par : Phillip Wood
Si find_word_boundaries()
rencontre une correspondance de longueur zéro (qui peut être causée par la correspondance d'un saut de ligne ou en utilisant '*
' au lieu de '+
' dans l'expression régulière) nous arrêtons de diviser l'entrée en mots ce qui génère une différence inexacte.
Pour résoudre cela, incrémentez le point de départ lorsqu'il y a une correspondance de longueur zéro et essayez une nouvelle correspondance.
Ceci est sûr car les expressions régulières posix retournent toujours la correspondance la plus longue disponible, donc une correspondance de longueur zéro signifie qu'il n'y a plus de correspondances disponibles à partir de la position actuelle.
Le commit bf82940 ("color-words
: activer REG_NEWLINE
pour aider l'utilisateur", 17 janvier 2009, Git v1.6.2-rc0 -- fusion) empêchait les sauts de ligne dans les classes de caractères négatifs mais il est toujours possible pour l'utilisateur d'avoir une correspondance explicite de saut de ligne dans l'expression régulière ce qui pourrait causer une correspondance de longueur zéro.
On pourrait argumenter que avoir des correspondances explicites de sauts de ligne ou utiliser '*
' plutôt que '+
' sont des erreurs de l'utilisateur mais il semble être préférable de les contourner plutôt que de produire des différences inexactes.