Git: хук "pre-receive" на стороне сервера не предотвратит push
Я использую сервер cgit для моего кода. Я написал сценарий предварительного получения, который должен проверять сообщение git commit: если сообщение не содержит одно из указанных слов, то commit должен остановить коммит. Вот код, который я написал для него в Bash:
#!/usr/bin/env bash
#######################################################
###### variables
######################################################
words=('Reviewed' 'at' 'Merge' 'remote-tracking' 'NO-Review' 'Revert' )
###########################################################
#######reading from git push
##########################################################
read -r OLDREV NEWREV REFNAME
comments=($(git log -n1 --format=%B $NEWREV))
############################################################
###### comparing between variables and git NEWREV commit
#############################################################
for word in "${words[@]}" # going through array of save variables
do
word=${word,,} # converting to lower case
for comment in "${comments[@]}" # going throug the commit message
do
comment=${comment,,} #converting to lower case
if [[ "^${word}$" =~ "^${comment}$" ]];then
exit 0
fi
done
done
echo "review board item is missing for the commit"
exit 1
Я ожидал, что если я помещу git-репозиторий в папку hook, то он выйдет, если условие будет выполнено. но на самом деле, вместо остановки коммита, он все еще продолжает хук пост-получения и затем коммит. Может ли кто-нибудь дать мне знать, если код неверен или моя логика недостаточно хороша? заранее спасибо
вот вывод удаленного сервера git:
Username for 'http://cgit.vaiolabs.com': silent-mobius
Password for 'http://silent-mobius@cgit.vaiolabs.com':
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 310 bytes | 0 bytes/s, done.
Total 3 (delta 2), reused 0 (delta 0)
remote: Getting configuration from adapter.
remote: Parsing the configuration.
remote: Review board item is missing for the commit
remote: debug..
remote: Running Git->RTC adapter...
remote: Git->RTC adapter finished.
To http://cgit.vaiolabs.com/git/swm.git/
как вы можете видеть, он печатает "Элемент обзора отсутствует для коммита", но затем он продолжает запускать PostScript, созданный другим разработчиком. - есть ли у вас предложения по этому поводу?