Git pre-commit hook для проверки строки и выхода из кода 1, если строка существует - PullRequest
0 голосов
/ 21 ноября 2018

Я пытаюсь заставить обработчик перед фиксацией работать, проверять файлы с разметкой и читать разницу, чтобы проверить наличие нескольких строк.Если строки существуют, коммит должен завершиться неудачей.

#!/bin/bash
#import os

echo "Running pre-commit hook" 
checks=os.environ["APPSETTING_DEVPASSWORD"],os.environ["APPSETTING_DEVUSER"],os.environ["APPSETTING_DEVPASS_ELMAH"]



git diff --cached --name-status | while read x file; do

      if [ "$x" == 'D' ]; then continue; fi
    for word in $checks
    do
        if egrep $word $file ; then
            echo "ERROR: Disallowed expression \"${word}\" in file: ${file}"
            exit 1
        fi
    done
done || exit $? 

Он по-прежнему фиксирует файлы, даже если в них есть строки.Любое руководство будет с благодарностью.Я новичок в bash.

1 Ответ

0 голосов
/ 21 ноября 2018

Должно быть что-то вроде этого:

#!/bin/bash

echo "Running pre-commit hook" 
checks=($APPSETTING_DEVPASSWORD $APPSETTING_DEVUSER $APPSETTING_DEVPASS_ELMAH) # create an array

git diff --cached --name-status | while read flag file; do
    if [ "$flag" == 'D' ]; then continue; fi

    for word in ${checks[@]}
    do
        if egrep -q "$word" "$file"; then
            echo "ERROR: Disallowed expression \"${word}\" in file: ${file}" >&2
            exit 1
        fi
    done
done
...