Bisect

Advanced Git

Amanda Crawford-Adamo

Software and Data Engineer

Co je git bisect?

Nástroj využívající binární vyhledávání k nalezení commitu, který zavedl chybu

Příkaz git bisect

git bisect

Účel

  1. Rychlé nalezení špatného commitu
  2. Nezbytné pro ladění dat
  3. Urychluje analýzu příčin
Advanced Git

Bisect – zahájení

  1. Zahájení relace git bisect

    git bisect start
    
  2. Označení aktuálního stavu jako špatného

    git bisect bad
    
  3. Označení posledního známého dobrého stavu

    git bisect good <commit-hash>
    

Graf commitů zobrazující první dva jako dobré (zeleně). Poslední commit je červený – jde o známý špatný commit. Mezi dobrými a špatnými commity jsou tři commity neznámého stavu (šedě). Poslední dobrý commit je označen příkazem git bisect good a špatný commit příkazem git bisect bad.

Advanced Git

Bisect – vyhledávání

  1. Označí stav commitu jako špatný

    git bisect bad
    
  2. Označí stav commitu jako dobrý

    git bisect good
    

Graf commitů zobrazující první dva jako dobré (zeleně). Poslední commit je červený – jde o známý špatný commit. Mezi dobrými a špatnými commity jsou tři commity neznámého stavu (šedě). Git bisect využívá binární vyhledávání a začíná prostředním commitem, poté zkontroluje commit vlevo nebo vpravo.

Advanced Git

Bisect – automatické vyhledávání

Zkontroluje, zda je verze commitu dobrá nebo špatná, spuštěním automatizovaného testovacího skriptu.

git bisect run <script_name>
  • Skript musí vrátit 0, pokud testy prošly.
  • Pokud testy selžou, musí vrátit nenulové číslo.

Graf commitů zobrazující první dva jako dobré (zeleně). Poslední commit je červený – jde o známý špatný commit. Mezi dobrými a špatnými commity jsou tři commity neznámého stavu (šedě). Git bisect využívá binární vyhledávání a začíná prostředním commitem, poté zkontroluje commit vlevo nebo vpravo.

Advanced Git

Bisect – výsledek

Příklad výstupu 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

Ukončí proces bisekce a vrátí se na aktuální HEAD

git bisect reset
Advanced Git

Kdy použít git bisect

Případy užití

  1. Hledání regresí v datových workflow
  2. Použití testovacích skriptů pro rychlejší ladění

Tipy

  • Automatizujte testování pomocí git bisect run <test-script>
  • Používejte popisné zprávy commitů pro usnadnění procesu
Advanced Git

Pojďme procvičovat!

Advanced Git

Preparing Video For Download...