Git pre-commit хук в Windows
17 августа 2014 Git 11366 просмотров
Сегодня прочитал статью про использование хуков в Git. Очень удачный пример выбрали авторы SitePoint’а, а именно, проверка синтаксиса во всех измененных/добавленных PHP-файлах перед коммитом. Так как коммиты я делаю с Windows-машины, то решение автора для меня не сработало - автор использует Linux. А потом оказалось, что все ищут решения того, как сделать это в Windows.

В PHP можно передать параметр "-l" для автоматической проверки правильности синтаксиса, но вот сам PHP нужно вызывать при помощи PowerShell.

Скопируйте следующий код в .git/hooks/pre-commit, измените путь к вашему php.exe, возможно,и к PowerShell, и попробуйте сделать commit с неправильным синтаксисом.
#!/bin/sh

# All discussion of this script here: http://plutov.by/post/git_pre_commit_windows

# Path to your PowerShell
powerShell="c:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy RemoteSigned -InputFormat None -Command "

# Path to PHP executable
php="d:/server/modules/php/PHP-5.4.17/php.exe"

# All modified/added PHP files
phpFiles=$(git status --short | grep -E '^(A|M)' | awk '{ print $2 }' | grep -E '\.php$')

for file in $phpFiles; do
    exec $powerShell' '$php' -l '$file

    # Success message for checking
    success='No syntax errors detected in '$file

    if ! [ "$code" == "$success" ]
    then
      exit 1
    fi
done
Ссылка на Gist