git пополам ручное управление против git пополам - PullRequest
0 голосов
/ 14 апреля 2020

Я изучаю 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

Спасибо

1 Ответ

0 голосов
/ 14 апреля 2020

Только что обнаружена проблема:

Мой скрипт был:

#!/bin/bash

npm test
echo "STATUS: $?"

exit $?

Поэтому, когда npm start возвращал 1, оператор echo изменил последний код выхода на 0, который я использовал в exit.

Спасибо за указание на script.

...