Skip to content

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Git Bisect – Übungsrepository

Dieses Repository dient als Spielwiese, um git bisect kennenzulernen und zu üben.

Hintergrund

Das Repository enthält eine kleine Python-Anwendung (stats.py), die statistische Berechnungen durchführt – zum Beispiel Summe, Durchschnitt, Median und Standardabweichung.

Irgendwo in der Commit-Historie hat sich ein Bug eingeschlichen. Eine Funktion liefert seitdem falsche Ergebnisse, ohne dass dabei ein Fehler geworfen wird. Deine Aufgabe ist es, mit git bisect den genauen Commit zu finden, der den Fehler eingeführt hat.

Voraussetzungen

  • Python 3 installiert
  • Git installiert

Aufgabe

1. Reproduziere den Bug

Führe die Anwendung aus und schau dir die Ausgabe an:

python stats.py

Überlege, welcher der ausgegebenen Werte nicht stimmen könnte. Das Testskript hilft dir dabei, den Fehler eindeutig zu erkennen:

python test_average.py

2. Starte die Bisect-Suche

Markiere zunächst den aktuellen Stand als fehlerhaft und einen frühen Commit als funktionierend:

git bisect start
git bisect bad                  # aktueller Stand ist fehlerhaft
git bisect good <commit-hash>   # ein früher Commit, der noch korrekt war

Den Hash eines frühen Commits findest du mit:

git log --oneline

3. Teste jeden Zwischenstand

Git wechselt nun automatisch zwischen Commits. Nach jedem Wechsel testest du, ob der Bug vorhanden ist:

python test_average.py

Teile Git dann das Ergebnis mit:

git bisect good   # dieser Commit ist noch fehlerfrei
# oder
git bisect bad    # dieser Commit ist bereits fehlerhaft

4. Automatische Suche (optional)

Statt jeden Commit manuell zu testen, kann Git das Testskript auch selbst ausführen:

git bisect run python test_average.py

5. Auswertung

Sobald Git den problematischen Commit gefunden hat, schau dir die Änderung genau an:

git show <gefundener-commit-hash>

Kannst du den Fehler im Code erkennen?

6. Bisect beenden

Vergiss nicht, die Bisect-Sitzung abzuschließen, bevor du weitermachst:

git bisect reset

Bonus: Datensätze aus einem Git Submodul

Füge das Repository https://github.com/codevibe-de/datasets als Submodul hinzu, z.B. unter dem Pfad "data"

Das vorhandene Skript run_dataset.py lädt einen Datensatz und gibt die Statistiken aus, wobei der Code aus stats.py verwendet wird.

python3 run_dataset.py data/fibonacci.csv
python3 run_dataset.py data/float_values.csv
python3 run_dataset.py data/negative_values.csv
python3 run_dataset.py data/empty.csv

Lernziele

Nach dieser Übung solltest du verstehen:

  • wie git bisect eine binäre Suche über die Commit-Historie durchführt
  • wie du mit git bisect good und git bisect bad Commits bewertest
  • wie du mit git bisect run die Suche vollständig automatisierst
  • warum ein automatisierbarer Test die Voraussetzung für eine effiziente Bisect-Suche ist

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages