Я сделал следующий pre-commit git hook:
#/usr/bin/env bash
echo "Running pre-commit hooks... "vendor/bin/peridot -c OS/Specs/peridot.php OS/Specs/
echo "Done."
Когда я просто ввожу эту команду в терминал, она запускает все мои тесты. Однако, когда запускается git hook, я получаю это:
Running pre-commit hooks...
PHP Parse error: parse error in /path/to/repo/vendor/peridot-php/peridot/bin/peridot on line 9
Done.
Эта строка содержит массив в квадратных скобках []. Когда я переключаюсь на старый синтаксис array (), ошибка исчезает (и заменяется еще одним вниз). Кроме того, когда я бегу php -v
в обоих местах я получаю:
Терминал
PHP 5.4.24 (cli) (сборка: 30 января 2014 г., 10:18:21)
перед фиксацией
PHP 5.3.28 (cli) (сборка: 23 января 2014 г. 18:02:48)
Почему мой Git hook использует неверную версию PHP? Как я могу это исправить? Спасибо!
Похоже vendor/bin/peridot
скрипт PHP, так как вы указали, что он начинается с хеш-бэнга PHP (#!/usr/bin/env php
). Похоже, что ваша среда Git отличается PATH
к вашей обычной учетной записи пользователя, и поэтому он сначала видит более старую версию PHP.
Хитрость в этом случае заключается в том, чтобы встроить версию PHP в хук коммита, чтобы она не выполняла никаких действий. PATH
поиск.
Других решений пока нет …