无法从 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) (构建时间: Jan 30 2014 10:18:21)

预提交
PHP 5.3.28 (cli) (构建时间: Jan 23 2014 18:02:48)

为什么我的 Git 钩子使用了错误版本的 PHP? 我该如何解决这个问题? 谢谢!

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

在这种情况下,诀窍是在提交钩子中硬连线 PHP 版本,这样它就不必进行任何PATH搜索。