Bisect

Git avancé

Amanda Crawford-Adamo

Software and Data Engineer

Qu'est-ce que git bisect ?

Un outil qui utilise la recherche binaire pour trouver le commit qui a introduit un bogue

Commande Git bisect

git bisect

Objectif

  1. Trouver rapidement le mauvais commit
  2. Essentiel pour le débogage des données
  3. Accélère l'analyse des causes profondes
Git avancé

Bisect - démarrer

  1. Démarrer une session git bisect

    git bisect start
    
  2. Marquer l'état actuel comme défectueux

    git bisect bad
    
  3. Indiquer le dernier état fonctionnel

    git bisect good <commit-hash>
    

Graphe de commits montrant les deux premiers comme « bons » en vert. Le dernier est rouge, marquant le commit défectueux connu. Entre les deux, trois commits sont « inconnus » en gris. Le dernier bon commit est marqué par git bisect good et le mauvais par git bisect bad.

Git avancé

Bisect - recherche

  1. Marquer l'état du commit comme défectueux

    git bisect bad
    
  2. Marquer l'état du commit comme bon

    git bisect good
    

Graphe de commits montrant les deux premiers comme « bons » en vert. Le dernier est rouge, marquant le commit défectueux connu. Entre les deux, trois commits sont « inconnus » en gris. Git bisect utilise une recherche binaire : il commence par vérifier le commit du milieu, puis celui à gauche ou à droite.

Git avancé

Bisect - recherche automatisée

Vérifie si le commit est bon ou mauvais en exécutant un script de test automatisé.

git bisect run <script_name>
  • Le script doit retourner 0 si les tests réussissent.
  • En cas d'échec, il doit retourner une valeur non nulle.

Graphe de commits montrant les deux premiers comme « bons » en vert. Le dernier est rouge, marquant le commit défectueux connu. Entre les deux, trois commits sont « inconnus » en gris. Git bisect utilise une recherche binaire : il commence par vérifier le commit du milieu, puis celui à gauche ou à droite.

Git avancé

Bisect - résultat

Exemple de sortie Git bisect

$ git log
b1a534f est le premier mauvais commit
commit b1a534f89l2c3d4e5f6g7h8i9j0k1l2m3n4o5p
Author: Jane Doe <[email protected]>
Date:   Thu Mar 14 14:30:00 2024 -0500

Update data transformation logic

Quitte le processus de bissection et revient à notre HEAD actuel

git bisect reset
Git avancé

Quand utiliser git bisect

Cas d'usage

  1. Repérer les régressions dans les flux de données
  2. Utiliser des scripts de test pour accélérer le débogage

Conseils

  • Automatisez les tests avec git bisect run <test-script>
  • Rédigez des messages de commit descriptifs pour faciliter le processus
Git avancé

Passons à la pratique !

Git avancé

Preparing Video For Download...