无法从 git 钩子 运行 橄榄石测试套件

Can't run peridot test suite from a git hook

我做了以下预提交 git 挂钩:

#/usr/bin/env bash
echo "Running pre-commit hooks... "
vendor/bin/peridot -c OS/Specs/peridot.php OS/Specs/
echo "Done."

当我在终端中简单地输入这个命令时,它运行是我所有的测试。但是,当 git 钩子被触发时,我得到这个:

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)(内置:2014 年 1 月 30 日 10:18:21)

预提交
PHP 5.3.28 (cli)(内置:2014 年 1 月 23 日 18:02:48)

为什么我的 Git 挂钩使用了错误版本的 PHP?我怎样才能解决这个问题?谢谢!

看起来 vendor/bin/peridot 是一个 PHP 脚本,因为您指出它以 PHP hashbang (#!/usr/bin/env php) 开头。看起来您的 Git 环境与您常用的用户帐户具有不同的 PATH,因此它首先看到 PHP 的旧版本。

这种情况下的诀窍是在您的提交挂钩中硬连接 PHP 的版本,因此它不必进行任何 PATH 搜索。