Git protip : suivre les évolutions d’une fonction avec log -L
Par Maxime Bréhin • Publié le 10 octobre 2022 • 1 min

N’as-tu jamais souhaité lister seulement les évolutions au sein d’une fonction ? Ça serait génial, on pourrait alors mieux déterminer l’origine d’un bug ou avoir une vision fine du travail réalisé au fil de l’eau.

Peut-être savais-tu déjà que tu peux obtenir la liste des commits qui modifient un fichier donné :

git log <chemin-de-fichier>

log classique pour le suivi d’un fichier

Je te présente sa version évoluée avec l’option -L !

# git log -L :<nom-de-fonction>:<chemin-de-fichier>
git log -L :sayHello:demo.js

log -L pour le suivi des évolutions d’une fonction dans fichier

Cette option a la particularité de ne permettre l’analyse que d’un fichier à la fois, mais surtout, d’une portion choisie, ici à l’aide du nom de la méthode/fonction recherchée. On obtient alors le détail, commit après commit, des évolutions de ce bloc (et rien d’autre, ni dans ce fichier, ni ailleurs).

En réalité, ça ne fonctionnera pas toujours parfaitement et il est possible dans certains cas de figures que tu aies plus que ta fonction (en gros, ça peut déborder par le bas).

Je te recommande alors de passer plutôt par cette autre syntaxe d’appel, surtout si tu as le fichier sous les yeux pour obtenir rapidement les numéros de lignes de début et de fin de la fonction.

# git log -L <num-ligne-de-début>,<num-ligne-de-fin>:<chemin-de-fichier>
git log -L 5,20:demo.js

Elle identifie la portion actuellement entre ces lignes, et ajuste l’intervalle associé pour chaque commit historique analysé, en fonction des changements pertinents. L’avantage, qu’écris-je, la puissance de cette syntaxe est qu’elle fonctionne avec n’importe quoi, tu n’es pas cantonné·e à la seule analyse de fonctions/de méthodes 🌈🦄 !

Tu veux aller plus loin et maîtriser pleinement les fondamentaux de Git ou être accompagné pour garantir la qualité de tes projets grâce à une bonne mise en place de Git ? On peut t’aider ou te former, il suffit de nous décrire ton besoin !