Можно ли использовать git bisect на тегах git?
Я люблю использовать git bisect особенно для решения ошибок регрессии. Однако я понял, что оно также может быть слишком детальным: оно указывает точное сообщение о коммите, что если я просто хотел бы знать, в каком выпуске произошла определенная ошибка (под выпуском я имею в виду тег git)?
Вышеуказанное не обязательно должно быть взаимоисключающим, я могу начать с поиска тега, вызвавшего ошибку, а затем просто еще раз выполнить еще один git bisect для этого тега.
2 ответа
Если у вас есть общий порядок по набору тегов, вы можете просто git bisect skip [range]
или git bisect skip [range] [range] [range] ...
- где каждый [range]
было бы tag1..tag2~1
, tag2..tag3~1
,… - находясь в git bisect
сессия
Можно ли использовать git bisect для тегов git
Да, при условии, что вы используете правильное имя тега.
Если нет, git bisect будет понятнее с Git 2.37:
"" ( ) был слишком тихим, прежде чем он был готов начать фактическое вычисление деления пополам, что было исправлено в Git 2.37 (3 квартал 2022 г.).
См. коммит f11046e , (11 мая 2022 г.) Криса Дауна (
cdown
) .
(Объединено Junio C Hamano --
gitster
-- в коммите 945b9f2, 20 мая 2022 г.)
коммит 0cf1def: состояние вывода до того, как мы будем готовы вычислить деление пополам
Подписано: Крис Даун
Зафиксировать 73c6de0 (
bisect
: не использовать недопустимый oid в качестве версии при запуске, 25 сентября 2020 г., Git v2.29.0-rc0 — слияние , указанное в пакете № 19) («разделение пополам: не использовать недопустимый oid в качестве версии при запуске») изменения поведениеgit bisect
(manman ) , чтобы снова рассматривать недопустимые oids как пути, как в старой реализации оболочки.Хотя такое поведение может быть желательным, оно также может вызвать путаницу.
Например, при разделении пополам в конкретном репо я столкнулся с этим:$ git bisect start d93ff48803f0 v6.3 $
... что заставило меня посидеть несколько минут, задаваясь вопросом, почему нет распечатки с указанием первого оборота для проверки.
Оказывается, тег на самом деле был «6.3», а не «v6.3» , и, таким образом, биссектриса по-прежнему молча запускалась только с плохой версией, потому что
d93ff48803f0
был действительным oid и "v6.3
" молча считалось путевой спецификацией.Хотя такое поведение может быть желательным, оно может сбивать с толку, особенно с различными соглашениями о репо, использующими или не использующими "
v
" перед именами выпусков или когда имя ветки или тег просто написаны с ошибкой в командной строке.Чтобы избежать подобных ситуаций, уточните, чего мы ждем:
$ git bisect start d93ff4_8803f0 v6.3 status: waiting for good commit(s), bad commit known
У нас уже есть хороший результат после того, как процесс bisect начался всерьез, поэтому нам больше не нужно ничего делать.