Trouver l’origine d’un bug avec git bisect

Guide git bisect : recherche dichotomique, automatisation avec scripts et bonnes pratiques pour trouver les bugs.

Git bisect : la recherche dichotomique des bugs

Vous voulez trouver rapidement le commit qui a introduit un bug dans votre base de code mais vous avez plusieurs centaines, voire milliers de commits ? Git bisect utilise la recherche dichotomique pour trouver le coupable efficacement. Chez Eve Media, nous utilisons git bisect pour le debugging.

Le principe

Vous indiquez un commit où le bug existe (bad) et un commit où il n’existe pas (good). Git bisect teste le commit au milieu. Vous indiquez si le bug est présent ou non. Git bisect répète en divisant l’intervalle par deux. En log2(n) tests, vous trouvez le commit fautif.

Démarrer une session bisect

git bisect start lance la session. git bisect bad marque le commit actuel comme bugué. git bisect good abc123 marque le commit abc123 comme sain. Git checkout automatiquement un commit intermédiaire.

Tester et avancer

Testez si le bug est présent. git bisect bad si oui. git bisect good si non. Git checkout le prochain commit à tester. Répétez jusqu’à trouver le premier commit bad. Git affiche le commit coupable.

Terminer la session

git bisect reset termine la session et vous ramène où vous étiez. Vous avez maintenant le commit exact qui a introduit le bug. Examinez-le pour comprendre et corriger.

Automatiser avec un script

Si vous avez un test qui détecte le bug : git bisect run ./test.sh. Le script doit retourner 0 si good, non-0 si bad. Git bisect exécute le script automatiquement jusqu’à trouver le commit.

Exemple concret

Le bug existe en HEAD. Le dernier release connu sans bug est v1.2.0. git bisect start, git bisect bad HEAD, git bisect good v1.2.0. Avec 1000 commits entre les deux, environ 10 tests suffisent pour trouver le coupable.

Skip des commits

Si un commit intermédiaire ne compile pas ou est non testable : git bisect skip. Git essaie un commit voisin. Attention : trop de skips peuvent fausser le résultat.

Visualiser la session

git bisect log montre l’historique de la session. git bisect visualize ouvre gitk avec les commits restants à tester. Utile pour comprendre où vous en êtes.

Bonnes pratiques

Des commits atomiques facilitent l’identification du changement fautif. Des tests automatisés permettent d’utiliser bisect run. Un historique propre (pas de commits « WIP ») aide au debugging.

Limitations

Si le bug a été introduit puis partiellement corrigé, bisect peut donner des résultats confus. Si vous ne pouvez pas tester certains commits (ne compilent pas), le résultat peut être imprécis.

Conclusion

Git bisect est un outil puissant et sous-utilisé. Pour des bugs de régression, c’est souvent le moyen le plus efficace de trouver la cause. Quelques minutes de bisect peuvent éviter des heures de debugging manuel.

Chez Eve Media, nous utilisons les bons outils pour des projets de qualité. Contactez-nous pour vos développements.

Partager sur :

Autres

Audit Digital & SEO

Audit Digital & SEO

Audit Digital & SEO : Optimisez Votre Présence et Vos Performances Web Avoir un site internet esthétique est une première étape, mais s’assurer qu’il soit

Éco-conception de Sites Internet

Éco-conception de Sites Internet : Allier Performance Numérique et Responsabilité Écologique L’éco-conception des sites web est une démarche essentielle pour créer des plateformes numériques performantes

Envoyer un message

WhatsApp