Srob Blabla et trucs techniques.

Simplifier la relecture de code avec git-difftool

Le développement avec Git implique généralement des commits plus nombreux qu'avec SVN (merges, nécessité de commiter des modifs intermédiaires pour pouvoir passer sur une autre branche, etc.). Du coup, on ne souhaite relire que les modifications apportées par l'intégralité de la branche, entre son début et son HEAD.

Un moyen simple fourni par Git est la commande difftool, qui affiche les différences portant sur un intervalle de commits, sans détailler les commits intermédiaires.

Par exemple, voici une branche 'hotfix-12345' que l'on veut relire :

$ git log --graph --format='%C(yellow)%an%Creset%C(magenta bold)%d%Creset%C(white bold) %h%Creset %s (%ar)' --all
(...)
|/
| * Simon Robert (hotfix-12345) fd2079e Modif b sur hotfix-12345 (64 seconds ago)
| * Simon Robert 3a0d12e Modif b sur hotfix-12345 (64 seconds ago)
| * Simon Robert 90dba9c Ajout b sur hotfix-12345 (64 seconds ago)
|/
* Simon Robert (hotfix) f4f3c97 Modif (64 seconds ago)
(...)

On souhaite relire les modifications faites sur la branche, du premier au dernier commit de la branche. Le graphe nous indique donc les commits 90dba9c à fd2079e inclus.

Petite subtilité : comme on cherche les différences apportées par ces commits et que le premier commit de la branche apporte déjà une modification, on veut les différences entre le commit précédent le premier commit de la branche (ici f4f3c97) et son dernier commit. Ce qui nous donne l'intervalle f4f3c97..fd2079e. On va donc utiliser difftool de cette façon :

git difftool -x meld 29086eb..429cb33

Pour chaque fichier concerné par les modifications, git difftool va lancer l'éditeur de diff spécifié (ici meld) en présentant les différences entre le premier et le dernier commits de la branche.