PHP Git Hook在测试执行时直接工作,但在通过Git执行时不工作


PHP Git Hook works directly when test execution but not when executing via git

我创建了下面的git钩子来自动执行一些任务,并在向服务器提交时将其管道返回。当我直接运行代码时,它运行得很好。当git-push推送到服务器并且服务器执行钩子时,它说

remote: Deployment [BETA]: updating.
remote: git fatal not a git repository.
remote: Deployment [BETA]: complete.
remote: git fatal not a git repository.

我的挂钩代码是:

#!/usr/bin/php
<?php
chdir("/var/www");
echo "Deployment [BETA]: updating." . PHP_EOL;
exec("git pull");
echo "Deployment [BETA]: complete." . PHP_EOL;
// Get the last commit message.
$log = shell_exec("git log -n 1 HEAD");
if (stripos($log, "[trigger:composer]"))
{
    echo "Composer: starting." . PHP_EOL;
    system("php /home/root/bin/composer.phar update");
    echo "Composer: completed." . PHP_EOL;
}
if (stripos($log, "[trigger:phpunit]"))
{
    system("./vendor/bin/phpunit");
}

如果有人能帮助我,我将不胜感激。

(From#git)问题实际上是,在挂钩的上下文中,GIT_DIRGIT_WORK_TREE是为您正在使用的存储库设置的。如果要在hook脚本中使用cd,那么通常应该适当地设置GIT_DIRGIT_WORK_TREE:如果要移动到Git工作树,则取消设置它们,或者将它们设置为指向适当的工作树和存储库目录。