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

Завершает процесс бисекции и возвращает к текущему HEAD

git bisect reset
Продвинутый Git

Когда использовать git bisect

Сценарии применения

  1. Поиск регрессий в конвейерах данных
  2. Использование тестовых скриптов для ускорения отладки

Советы

  • Автоматизируйте тестирование с помощью git bisect run <test-script>
  • Используйте информативные сообщения коммитов
Продвинутый Git

Давайте потренируемся!

Продвинутый Git

Preparing Video For Download...