我正在尝试使预提交 Hook 起作用,以检查分段文件并读取差异以检查一些字符串。如果字符串存在,则提交必须失败。
#!/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 还很陌生。
最佳答案
它必须是这样的:
#!/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
关于bash - Git 预提交钩子(Hook)检查字符串,如果字符串存在则退出代码 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53416905/