Можно ли использовать 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 начался всерьез, поэтому нам больше не нужно ничего делать.

Другие вопросы по тегам