У меня есть следующий хук git pre-commit в Windows:
#!/bin/sh
./bin/Verification.exe
if [ $? -ne 0 ]
then
echo "Failed verfication: canceling commit"
exit 1
fi
exit 0
Verification.exe — это консольное приложение .Net, которое я свел к этому для целей тестирования:
static int Main(string[] args)
{
return -1;
}
Проблема в том, что скрипт bash, похоже, не делает код выхода из консольного приложения (т.е. -1) доступным в $? переменная. Исполняемый файл запускается, но в сценарии всегда выполняется условие if. Я попытался запустить Verification.exe из пакетного файла Windows с «echo %errorlevel%», и он, как и ожидалось, возвращает -1.
Как проверить код выхода внутри сценария предварительной фиксации?