gpt4 book ai didi

php - 有没有更好的方法来编写 git 预提交 Hook 来检查提交中的任何 php 文件是否存在解析错误?

转载 作者:可可西里 更新时间:2023-11-01 12:58:18 24 4
gpt4 key购买 nike

我目前的情况是

#!/bin/sh

php_syntax_check()
{
retval=0
for i in $(git-diff-index --name-only --cached HEAD -- | grep -e '\.php$'); do
if [ -f $i ]; then
output=$(php -l $i)
retval=$?
if [ $retval -gt 0 ]; then
echo "=============================================================================="
echo "Unstaging $i for the commit due to the follow parse errors"
echo "$output"
git reset -q HEAD $i
fi
fi
done

if [ $retval -gt 0 ]; then
exit $retval
fi
}
php_syntax_check

最佳答案

如果提交是部分提交(并非工作树中的所有更改都已提交),那么这会给出不正确的结果,因为它测试的是工作副本而不是暂存副本。

一种方法可以是:

git diff --cached --name-only --diff-filter=ACMR | xargs git checkout-index --prefix=$TMPDIR/ --
find $TMPDIR -name '*.php' -print | xargs -n 1 php -l

这会将暂存图像的副本复制到暂存空间,然后在那里对它们运行测试命令。如果任何文件在构建中包含其他文件,那么您可能必须在测试树中重新创建整个暂存图像,然后在那里测试更改的文件(参见:Git pre-commit hook : changed/added files)。

关于php - 有没有更好的方法来编写 git 预提交 Hook 来检查提交中的任何 php 文件是否存在解析错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43374/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com