cd /path/to/project/.git/hooks mv pre-commit.sample pre-commit vim pre-commit
删除原有的东西,将下面脚本复制进去
#!/bin/bash # PHP CodeSniffer pre-commit hook for git # # @author Soenke Ruempler <soenke@ruempler.eu> # @author Sebastian Kaspari <s.kaspari@googlemail.com> # # see the README PHPCS_BIN=bin/phpcs #PHPCS_CODING_STANDARD=PEAR PHPCS_CODING_STANDARD=PSR2 PHPCS_IGNORE= PHPCS_IGNORE_WARNINGS=1 TMP_STAGING=".tmp_staging" if [ ! -x $PHPCS_BIN ]; then echo "PHP CodeSniffer bin not found or executable -> $PHPCS_BIN" exit 1 fi if git rev-parse --verify HEAD then against=HEAD else against=4b825dc642cb6eb9a060e54bf8d69288fbee4904 fi FILES=$(git diff-index --name-only --cached --diff-filter=ACMR $against -- ) if [ "$FILES" == "" ]; then exit 0 fi if [ -e $TMP_STAGING ]; then rm -rf $TMP_STAGING fi mkdir $TMP_STAGING # match files against whitelist FILES_TO_CHECK="" for FILE in $FILES do echo "$FILE" | egrep -q "$PHPCS_FILE_PATTERN" RETVAL=$? if [ "$RETVAL" -eq "0" ] then FILES_TO_CHECK="$FILES_TO_CHECK $FILE" fi done if [ "$FILES_TO_CHECK" == "" ]; then exit 0 fi # execute the code sniffer if [ "$PHPCS_IGNORE" != "" ]; then IGNORE="--ignore=$PHPCS_IGNORE" else IGNORE="" fi if [ "$PHPCS_SNIFFS" != "" ]; then SNIFFS="--sniffs=$PHPCS_SNIFFS" else SNIFFS="" fi if [ "$PHPCS_ENCODING" != "" ]; then ENCODING="--encoding=$PHPCS_ENCODING" else ENCODING="" fi if [ "$PHPCS_IGNORE_WARNINGS" == "1" ]; then IGNORE_WARNINGS="-n" else IGNORE_WARNINGS="" fi # Copy contents of staged version of files to temporary staging area # because we only want the staged version that will be commited and not # the version in the working directory STAGED_FILES="" for FILE in $FILES_TO_CHECK do ID=$(git diff-index --cached $against $FILE | cut -d " " -f4) # create staged version of file in temporary staging area with the same # path as the original file so that the phpcs ignore filters can be applied mkdir -p "$TMP_STAGING/$(dirname $FILE)" git cat-file blob $ID > "$TMP_STAGING/$FILE" STAGED_FILES="$STAGED_FILES $TMP_STAGING/$FILE" done OUTPUT=$($PHPCS_BIN -s $IGNORE_WARNINGS --standard=$PHPCS_CODING_STANDARD $ENCODING $IGNORE $SNIFFS $STAGED_FILES) RETVAL=$? rm -rf $TMP_STAGING if [ $RETVAL -ne 0 ]; then echo "$OUTPUT" fi exit $RETVAL
保存
暂停代码检测,将文件重命名即可
mv pre-commit pre-commits