Bisect

Zaawansowany Git

Amanda Crawford-Adamo

Software and Data Engineer

Czym jest git bisect?

Narzędzie wykorzystujące wyszukiwanie binarne do znalezienia commita, który wprowadził błąd

Polecenie Git Bisect

git bisect

Cel

  1. Szybkie znalezienie złego commita
  2. Niezbędne przy debugowaniu danych
  3. Przyspiesza analizę przyczyn źródłowych
Zaawansowany Git

Bisect – start

  1. Rozpoczęcie sesji git bisect

    git bisect start
    
  2. Oznaczenie bieżącego stanu jako złego

    git bisect bad
    
  3. Oznaczenie ostatniego znanego dobrego stanu

    git bisect good <commit-hash>
    

Wykres commitów pokazujący dwa pierwsze commity jako dobre (kolor zielony). Ostatni commit jest czerwony – to znany zły commit. Pomiędzy dobrymi a złymi commitami znajdują się trzy commity o nieznanym statusie (kolor szary). Ostatni dobry commit jest oznaczony jako git bisect good, a zły commit jako git bisect bad.

Zaawansowany Git

Bisect – wyszukiwanie

  1. Oznacza stan commita jako zły

    git bisect bad
    
  2. Oznacza stan commita jako dobry

    git bisect good
    

Wykres commitów pokazujący dwa pierwsze commity jako dobre (kolor zielony). Ostatni commit jest czerwony – to znany zły commit. Pomiędzy dobrymi a złymi commitami znajdują się trzy commity o nieznanym statusie (kolor szary). Git bisect używa wyszukiwania binarnego, zaczynając od środkowego commita, a następnie sprawdza commit po lewej lub prawej stronie.

Zaawansowany Git

Bisect – automatyczne wyszukiwanie

Sprawdza, czy wersja commita jest dobra czy zła, uruchamiając automatyczny skrypt testowy.

git bisect run <script_name>
  • Skrypt musi zwrócić 0, jeśli testy przeszły pomyślnie.
  • Jeśli testy nie powiodą się, powinien zwrócić wartość różną od zera.

Wykres commitów pokazujący dwa pierwsze commity jako dobre (kolor zielony). Ostatni commit jest czerwony – to znany zły commit. Pomiędzy dobrymi a złymi commitami znajdują się trzy commity o nieznanym statusie (kolor szary). Git bisect używa wyszukiwania binarnego, zaczynając od środkowego commita, a następnie sprawdza commit po lewej lub prawej stronie.

Zaawansowany Git

Bisect – wynik

Przykładowe wyjście Git Bisect

$ git log
b1a534f is the first bad commit
commit b1a534f89l2c3d4e5f6g7h8i9j0k1l2m3n4o5p
Author: Jane Doe <[email protected]>
Date:   Thu Mar 14 14:30:00 2024 -0500

Update data transformation logic

Kończy proces bisect i powraca do bieżącego HEAD

git bisect reset
Zaawansowany Git

Kiedy używać git bisect

Przypadki użycia

  1. Znajdowanie regresji w przepływach danych
  2. Użycie skryptów testowych do szybszego debugowania

Wskazówki

  • Automatyzacja testów z git bisect run <test-script>
  • Używanie opisowych komunikatów commitów
Zaawansowany Git

Czas na ćwiczenia!

Zaawansowany Git

Preparing Video For Download...