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

时间:2013-12-05 20:41:10

标签: php git githooks

我创建了以下git hook来为我自动执行某些任务,并在我将提交提交到服务器时将其重新管道化。我直接运行代码时工作正常。当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");
}

如果有人能帮助我,那将非常感激。

1 个答案:

答案 0 :(得分:2)

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