Bisect

Fortgeschrittenes Git

Amanda Crawford-Adamo

Software and Data Engineer

Was ist git bisect?

Ein Tool, das per binärer Suche den Commit findet, der einen Bug eingeführt hat

Git-Bisect-Befehl

git bisect

Zweck

  1. Finde den fehlerhaften Commit schnell
  2. Unverzichtbar fürs Debuggen von Daten
  3. Beschleunigt die Ursachenanalyse
Fortgeschrittenes Git

Bisect – Start

  1. Git-bisect-Session starten

    git bisect start
    
  2. Aktuellen Zustand als „bad" markieren

    git bisect bad
    
  3. Letzten bekannten „good"-Zustand markieren

    git bisect good <commit-hash>
    

Grafik von Commits: Die ersten zwei Commits sind grün (gut). Der letzte Commit ist rot (bekannt fehlerhaft). Dazwischen liegen drei graue Commits mit unbekanntem Status. Der letzte gute Commit ist mit git bisect good markiert, der fehlerhafte mit git bisect bad.

Fortgeschrittenes Git

Bisect – Suche

  1. Markiert den Commit-Zustand als „bad"

    git bisect bad
    
  2. Markiert den Commit-Zustand als „good"

    git bisect good
    

Grafik von Commits: Die ersten zwei Commits sind grün (gut). Der letzte Commit ist rot (bekannt fehlerhaft). Dazwischen liegen drei graue Commits mit unbekanntem Status. Git bisect nutzt binäre Suche und startet mit dem mittleren Commit und prüft dann links oder rechts weiter.

Fortgeschrittenes Git

Bisect – automatisierte Suche

Prüft per Skript, ob ein Commit gut oder schlecht ist.

git bisect run <script_name>
  • Das Skript muss 0 zurückgeben, wenn die Tests bestehen.
  • Bei Fehltests soll es eine von 0 verschiedene Zahl zurückgeben.

Grafik von Commits: Die ersten zwei Commits sind grün (gut). Der letzte Commit ist rot (bekannt fehlerhaft). Dazwischen liegen drei graue Commits mit unbekanntem Status. Git bisect nutzt binäre Suche und startet mit dem mittleren Commit und prüft dann links oder rechts weiter.

Fortgeschrittenes Git

Bisect – Ergebnis

Beispielausgabe von Git Bisect

$ git log
b1a534f ist der erste fehlerhafte Commit
commit b1a534f89l2c3d4e5f6g7h8i9j0k1l2m3n4o5p
Author: Jane Doe <[email protected]>
Date:   Thu Mar 14 14:30:00 2024 -0500

Update data transformation logic

Beendet den Bisect-Prozess und kehrt zu unserem aktuellen HEAD zurück

git bisect reset
Fortgeschrittenes Git

Wann du git bisect nutzt

Anwendungsfälle

  1. Regressionen in Daten-Workflows finden
  2. Testskripte für schnelleres Debugging nutzen

Tipps

  • Tests mit git bisect run <test-script> automatisieren
  • Aussagekräftige Commit-Messages helfen beim Prozess
Fortgeschrittenes Git

Lass uns üben!

Fortgeschrittenes Git

Preparing Video For Download...