Bisect

Avancerad Git

Amanda Crawford-Adamo

Software and Data Engineer

Vad är git bisect?

Ett verktyg som använder binärsökning för att hitta den incheckning som introducerade en bugg

Git Bisect-kommandot

git bisect

Syfte

  1. Hitta den felaktiga incheckningen snabbt
  2. Viktigt för felsökning av data
  3. Snabbar upp rotorsaksanalysen
Avancerad Git

Bisect – start

  1. Starta en git bisect-session

    git bisect start
    
  2. Markera det aktuella tillståndet som felaktigt

    git bisect bad
    
  3. Markera det senast kända fungerande tillståndet

    git bisect good <commit-hash>
    

Graf över incheckningar där de två första visas som fungerande och markeras med grönt. Den sista incheckningen är röd och anger att det är den kända felaktiga incheckningen. Incheckningarna däremellan är grå, vilket betyder att det är okänt om de är fungerande eller felaktiga. Den sista fungerande incheckningen är markerad med git bisect good och den felaktiga med git bisect bad.

Avancerad Git

Bisect – sökning

  1. Markerar incheckningens tillstånd som felaktigt

    git bisect bad
    
  2. Markerar incheckningens tillstånd som fungerande

    git bisect good
    

Graf över incheckningar där de två första visas som fungerande och markeras med grönt. Den sista incheckningen är röd och anger att det är den kända felaktiga incheckningen. Incheckningarna däremellan är grå, vilket betyder att det är okänt om de är fungerande eller felaktiga. Git bisect använder binärsökning och börjar med att kontrollera den mittersta incheckningen och går sedan åt vänster eller höger.

Avancerad Git

Bisect – automatiserad sökning

Kontrollerar om inceckningens version är fungerande eller felaktig genom att köra ett automatiserat testskript.

git bisect run <script_name>
  • Skriptet måste returnera 0 om testerna godkänns.
  • Om testerna misslyckas ska det returnera ett värde skilt från noll.

Graf över incheckningar där de två första visas som fungerande och markeras med grönt. Den sista incheckningen är röd och anger att det är den kända felaktiga incheckningen. Incheckningarna däremellan är grå, vilket betyder att det är okänt om de är fungerande eller felaktiga. Git bisect använder binärsökning och börjar med att kontrollera den mittersta incheckningen och går sedan åt vänster eller höger.

Avancerad Git

Bisect – resultat

Exempel på utdata från 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

Avslutar git bisect-processen och återgår till aktuell HEAD

git bisect reset
Avancerad Git

När ska man använda git bisect?

Användningsområden

  1. Hitta regressioner i dataarbetsflöden
  2. Använd testskript för snabbare felsökning

Tips

  • Automatisera testning med git bisect run <test-script>
  • Använd beskrivande incheckningsmeddelanden som stöd i processen
Avancerad Git

Nu kör vi en övning!

Avancerad Git

Preparing Video For Download...