Aujourd’hui je vous propose une petite astuce pour vous éviter bien des problèmes de résolution de conflits avec GIT.

Le contexte : un problème d’espace(s)

Supposons que vous collaborez avec quelqu’un sur un fichier source dans un langage qui ignore les espaces blancs, et que :

  1. vous avez retravaillé une partie du code
  2. votre collègue a de son côté modifié une autre partie du code et, par erreur bien entendu, remplacé toutes les tabulations par des espaces
I'm not hiring him, he uses spaces not tabs.

©GIPHY

Lorsque vous allez récupérer le code de votre collègue, GIT ne sera pas capable de fusionner automatiquement vos changements respectifs.

L’astuce : utiliser une stratégie de merge qui ignore les espaces

Voici donc la commande magique qui va vous faire gagner des heures de vie :

git merge -Xignore-space-change

Ce choix de stratégie (option -X) permet à GIT de savoir que votre langage de programmation n’a que faire des espaces blancs, et d’être ainsi beaucoup plus intelligent dans sa fusion. Normalement, ça ne devrait donc vous laisser à résoudre que les éventuels « vrais » conflits.

Bonus track : ignore-all-space

Il existe en réalité 2 stratégies de GIT pour résoudre ce problème : ignore-space-change, dont nous venons de parler, et ignore-all-space.

La différence est subtile :

  • ignore-all-space ignore tous les espaces blancs
  • ignore-space-change ignore uniquement les variations d’espaces blancs, en considérant comme équivalentes des séquences de N espaces blancs (N > 0)

Pour ceux qui voudraient en savoir plus, je vous invite à lire la documentation à ce sujet.