3 回答

TA貢獻(xiàn)1859條經(jīng)驗(yàn) 獲得超6個(gè)贊
獲得相同列表的更簡(jiǎn)潔的方法是:
git diff --cached --name-only --diff-filter=ACM
這將返回需要檢查的文件列表。
但是僅php -l在工作副本上運(yùn)行可能不是正確的選擇。如果您正在執(zhí)行部分提交,即僅選擇當(dāng)前工作集與HEAD的差異的子集作為提交,則測(cè)試將在您的工作集上運(yùn)行,但將證明您的從未存在過(guò)的提交磁盤(pán)。
要正確執(zhí)行此操作,應(yīng)將整個(gè)暫存的圖像提取到臨時(shí)區(qū)域,然后在此處進(jìn)行測(cè)試。
rm -rf $TEMPDIR
mkdir -p $TEMPDIR
git checkout-index --prefix=$TEMPDIR/ -af
git diff --cached --name-only --diff-filter=ACM | xargs -n 1 -I '{}' \bin\echo TEMPDIR/'{}' | grep \\.php | xargs -n 1 php -l
有關(guān)其他實(shí)現(xiàn),請(qǐng)參見(jiàn)為Git構(gòu)建更好的預(yù)提交掛鉤。

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
這是我用于Perl檢查的內(nèi)容:
git diff --cached --name-status | while read st file; do
# skip deleted files
if [ "$st" == 'D' ]; then continue; fi
# do a check only on the perl files
if [[ "$file" =~ "(.pm|.pl)$" ]] && ! perl -c "$file"; then
echo "Perl syntax check failed for file: $file"
exit 1
fi
done
對(duì)于PHP,它將如下所示:
git diff --cached --name-status | while read st file; do
# skip deleted files
if [ "$st" == 'D' ]; then continue; fi
# do a check only on the php files
if [[ "$file" =~ ".php$" ]] && ! php -l "$file"; then
echo "PHP syntax check failed for file: $file"
exit 1
fi
done
- 3 回答
- 0 關(guān)注
- 1048 瀏覽
添加回答
舉報(bào)