Я изучаю git bisect
Давайте предположим следующую линейную git историю:
* A commit-1 # HEAD
* B commit-2
* C commit-3
* D commit-4 # First bad commit
* E commit-5
* F commit-6
* G commit-7
* H commit-8 # Is good
Затем я начинаю деление пополам:
git bisect start
git bisect bad HEAD # A commit-1
git bisect good H # H commit-8
У меня есть скрипт, который запускает некоторые тесты. Если я запускаю тесты вручную и отмечаю каждый коммит как bad и good , он выполняет следующие шаги:
E commit-5 # OK
C commit-3 # FAIL
D commit-4 # FAIL
Итак, он заканчивает тем, что D commit-4
- это первый плохой коммит, , который является правильным .
Но, если я go, используя git bisect run ../outside/test.sh
он делает следующее:
E commit-5 # OK
C commit-3 # FAIL
B commit-2 # FAIL
A commit-1 # FAIL
Говоря, что A commit-1
- это первый плохой коммит, , что неправильно .
Итак, если я понимаю бинарный поиск здесь, когда C commit-3
плохой, первый плохой коммит должен быть сам или быть ниже.
Что мне здесь не хватает? Почему у них оказывается разное поведение? Похоже, git bisect run
работает по другому алгоритму.
Моя git версия: 2.19.0
Спасибо