Php 吉特胡克怀疑
我已经在pre-commit中编写了代码,可以检查是否没有语法错误。但我有一些疑问Php 吉特胡克怀疑,php,git,shell,Php,Git,Shell,我已经在pre-commit中编写了代码,可以检查是否没有语法错误。但我有一些疑问 它将根据开发人员的PHP版本(可能有所不同)检查语法错误,我认为它应该基于服务器PHP版本。如何处理 变量“scopeVar”的作用域仅以while循环结束,假设我想基于scopeVar的值在while循环之外执行一些操作。 我能处理这个吗 对于Bash中的范围问题: git diff --cached --name-only | while read FILE; do if [[ "$FILE" =~ ^.+(
git diff --cached --name-only | while read FILE; do
if [[ "$FILE" =~ ^.+(php|inc)$ ]]; then
if [[ -f $FILE ]]; then
php -l "$FILE" 1> /dev/null
if [ $? -ne 0 ]; then
scopeVar=1;
echo -e "\e[1;31m\tAborting commit due to files with syntax errors. $FILE \e[0m" >&2
exit 1
fi
fi
fi
done || exit $?
关于PHP版本。我会在客户端进行PHP版本检查,例如
declare myvar
git diff --cached --name-only |
{
while IFS= read -r FILE; do
# your code...
myvar=1
done
echo $myvar # outputs 1
}
如果您使用的是bash,那么可以使用进程替换而不是管道来避免此问题:
done
fatal_error()
{
echo >&2 "$1"
exit 1
}
test_php_ver()
{
r=`php -r 'echo version_compare(PHP_VERSION, "5.6.19") >= 0 ? 1 : 0;'`
[ $r -eq 1 ] || fatal_error "Invalid php version"
}
test_php_ver