Rod*_*ato 7 php git version-control
到目前为止我所拥有的是什么
#!/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
Run Code Online (Sandbox Code Playgroud)
如果提交是部分提交(并非工作树中的所有更改都已提交),则此 make 会给出不正确的结果,因为它测试的是工作副本而不是暂存副本。
一种方法可以是:
git diff --cached --name-only --diff-filter=ACMR | xargs git checkout-index --prefix=$TMPDIR/ --
find $TMPDIR -name '*.php' -print | xargs -n 1 php -l
Run Code Online (Sandbox Code Playgroud)
这会将暂存图像的副本复制到暂存空间,然后在那里对其运行测试命令。如果任何文件在构建中包含其他文件,那么您可能必须在测试树中重新创建整个暂存映像,然后在那里测试更改的文件(请参阅:Git 预提交挂钩:更改/添加的文件)。
归档时间: |
|
查看次数: |
1526 次 |
最近记录: |