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

0 ответов

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