Die fehlerhafte Änderung mit Hilfe von git bisect finden

Mittlerweile habe ich mir angewöhnt nach jeder kleineren zusammenhängenden Änderung im Quellcode zu commiten. Am Tag kann dann natürlich eine ordentliche Menge zusammen kommen. Alles gut. Blöd ist es dann nur, wenn z.B. am Abend auf dem Gerät ein Fehler auftritt, welcher den ganzen Tag im Simulator nicht aufgetreten ist. Glücklicherweise dann auch noch ohne aussagekräftige Fehlermeldung.

Jetzt könnte man natürlich jeden commit durchgehen per Hand. In Git und Mercurial (mit Erweiterung) gibt’s jedoch eine schönere Lösung dafür „bisect“, welcher das ganze ein wenig automatisiert.

Als Beispiel habe ich mal Git herangenommen, zuerst wechselt man in das entsprechende Projekt Verzeichnis und beginnt dann mit folgenden Befehlen:

git bisect start
git bisect good

Beim Good Befehl gibt man dabei an, welcher Commit mit Sicherheit noch funktioniert hat z.B. am vorherigen Tag.

git bisect bad

Bad legt dann genau das Gegenteil fest, wo der Fehler mit Sicherheit vorhanden ist.

Der aufmerksame Beobachter wird festgestellt haben, dass git bisect nun einen anderen Commit ausgecheckt hat. Nun sind wir an der Reihe. Wir müssen nun testen, ob der Commit auch den Fehler enthält oder nicht. Sollte der Fehler auch hier bestehen teilen wir das git mit:

1 $ git bisect bad
ansonsten, wenn alles funktioniert:

1 $ git bisect good
Dies wiederholt man nun solange bis die Änderung gefunden wurde, welche einen Fehler verursacht. Dann bleibt nur den Commit zu merken, anzuschauen was dort verändert wurde und den Fehler in den (hoffentlich wenigen) Zeilen zu finden.

Zum Schluss müssen wir noch git bisect beenden:

1 $ git bisect reset

Kommentar verfassen