Команда тестирования внутри git не работает. - PullRequest
1 голос
/ 21 января 2020

Я использую git bisect, чтобы узнать версию, в которой файл VERSION изменился с 0.0.1_testing на более новую версию, и я хочу использовать bisect run, как это.

git bisect run sh -c 'if [ "$(cat VERSION)" == "0.0.1_testing" ] ; then exit 0 ; else exit 1 ; fi'

Но я продолжаю получать плохой результат, и эта ошибка sh: 1: [: 0.1.0: unexpected operator (0.1.0 возвращается "$(cat VERSION)". Я предполагаю, что это потому, что, когда субоболочка выходит, bisect использует значение выхода и даже не go до конца скрипта.

Есть ли способ, как заставить это работать? Или какая-то хорошая альтернатива? Я знаю, что мог бы использовать другие инструменты, кроме bisect, но Я бы очень хотел сделать это так.

1 Ответ

1 голос
/ 21 января 2020

Если бы вы использовали bash, вы могли бы использовать = или == для сравнения строк, поэтому одним из решений вашей проблемы является изменение sh на bash в вашей команде. Это потому, что для bash команда test ([ ... ] в вашей команде) является встроенной командой, которая поддерживает оба сравнения.

Используемая оболочка не имеет той же встроенной команды и является используя системную команду test, которая имеет только = в качестве сравнения строк. Итак, альтернативное решение вашей проблемы - изменить == на = в вашей команде.

...