Bisect

Geavanceerd Git

Amanda Crawford-Adamo

Software and Data Engineer

Wat is git bisect?

Een tool die met binair zoeken de commit vindt die een bug introduceerde

Git Bisect-commando

git bisect

Doel

  1. Snel de foute commit vinden
  2. Essentieel voor data-debugging
  3. Versnelt root-cause-analyse
Geavanceerd Git

Bisect - start

  1. Start een bisect-sessie

    git bisect start
    
  2. Markeer de huidige staat als slecht

    git bisect bad
    
  3. Markeer de laatst bekende goede staat

    git bisect good <commit-hash>
    

Grafiek van commits: de eerste twee zijn groen (goed). De laatste is rood (bekend slecht). Daartussen drie grijze commits met onbekende status. De laatste goede commit is gemarkeerd met git bisect good en de slechte met git bisect bad.

Geavanceerd Git

Bisect - zoeken

  1. Markeer de commit als slecht

    git bisect bad
    
  2. Markeer de commit als goed

    git bisect good
    

Grafiek van commits: de eerste twee zijn groen (goed). De laatste is rood (bekend slecht). Daartussen drie grijze commits met onbekende status. Git bisect gebruikt binair zoeken: het test de middelste commit en daarna links of rechts.

Geavanceerd Git

Bisect - automatisch zoeken

Controleert met een script of de commit goed of fout is.

git bisect run <script_name>
  • Het script moet 0 retourneren als tests slagen.
  • Bij falen moet het een niet-nulwaarde retourneren.

Grafiek van commits: de eerste twee zijn groen (goed). De laatste is rood (bekend slecht). Daartussen drie grijze commits met onbekende status. Git bisect gebruikt binair zoeken: het test de middelste commit en daarna links of rechts.

Geavanceerd Git

Bisect - resultaat

Voorbeeldoutput 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

Stopt de bisect-sessie en gaat terug naar de huidige HEAD

git bisect reset
Geavanceerd Git

Wanneer gebruik je git bisect

Use cases

  1. Regressies in dataworkflows vinden
  2. Testscripts gebruiken voor sneller debuggen

Tips

  • Testen automatiseren met git bisect run <test-script>
  • Beschrijvende commitberichten helpen het proces
Geavanceerd Git

Laten we oefenen!

Geavanceerd Git

Preparing Video For Download...