Bisect

Просунуте Git

Amanda Crawford-Adamo

Software and Data Engineer

Що таке git bisect?

Інструмент, що використовує бінарний пошук, щоб знайти коміт, який спричинив баг

Команда Git Bisect

git bisect

Призначення

  1. Швидко знайти «поганий» коміт
  2. Важливо для налагодження даних
  3. Прискорює пошук першопричини
Просунуте Git

Bisect — запуск

  1. Запустіть сесію git bisect

    git bisect start
    
  2. Позначте поточний стан як «поганий»

    git bisect bad
    
  3. Позначте останній відомий «хороший» стан

    git bisect good <commit-hash>
    

Граф комітів: перші два — «хороші» (зелений). Останній — «поганий» (червоний). Між ними три невідомих коміти (сірий). Останній «хороший» позначено git bisect good, «поганий» — git bisect bad.

Просунуте Git

Bisect — пошук

  1. Позначає коміт як «поганий»

    git bisect bad
    
  2. Позначає коміт як «хороший»

    git bisect good
    

Граф комітів: перші два — «хороші» (зелений). Останній — «поганий» (червоний). Між ними три невідомих коміти (сірий). Git bisect застосовує бінарний пошук: спершу перевіряє середній коміт, далі — лівіше або правіше.

Просунуте Git

Bisect — автоматизований пошук

Перевіряє, чи коміт «хороший» або «поганий», запускаючи автоматизований скрипт.

git bisect run <script_name>
  • Скрипт має повертати 0, якщо тести пройшли.
  • Якщо тести падають — повертає ненульове число.

Граф комітів: перші два — «хороші» (зелений). Останній — «поганий» (червоний). Між ними три невідомих коміти (сірий). Git bisect застосовує бінарний пошук: спершу перевіряє середній коміт, далі — лівіше або правіше.

Просунуте Git

Bisect — результат

Приклад виводу 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

Вихід із процесу bisection і повернення до поточного HEAD

git bisect reset
Просунуте Git

Коли використовувати git bisect

Випадки використання

  1. Пошук регресій у конвеєрах даних
  2. Скрипти тестів для швидшого налагодження

Поради

  • Автоматизуйте тести через git bisect run <test-script>
  • Пишіть змістовні повідомлення комітів — це допоможе
Просунуте Git

Давайте потренуємось!

Просунуте Git

Preparing Video For Download...