无法在gitolite post-receive hook中执行git命令

时间:2014-02-05 15:53:31

标签: git hook gitolite

我真的无法弄清楚为什么会这样。

在我的系统中,我使用gitolite获得了'git'用户。所有git repos,用户和repos的权限工作都很好,似乎gitolite配置好了至少基本用途。

现在我需要在机器上使用gitolite设置一个web服务器,我设置了apache,并且使用git用户,我在www目录中克隆了一个repo,以便我可以通过浏览器访问这些文件。

克隆没有任何问题,我也可以手动执行git pull,git将从回购中拉出来。

问题是每当用户推送时我尝试自动将项目部署到www目录。我写了一个〜/ .gitolite / hooks / common / post-receive脚本,代码如下:

#!/bin/sh
dir=/var/www/onlinerepo
if [ ! -d $dir ] ; then
        echo "the directory $dir does not exist"
        exit 1
fi

cd $dir
git pull
touch DONE

我还做了gl-setup将脚本传播到所有存储库。 当用户推送时,我确定脚本已执行,因为我看到/ var / www / onlinerepo / DONE文件被写入,但没有执行git pull。我试图看到命令的输出执行git pull>>输出,但它只创建一个空文件。

如果我通过命令行执行git pull命令,或者即使我从命令行手动执行post-receive脚本,我也会看到通常的“已经是最新的”信息消息。

我做错了吗?我真的不明白为什么git pull是脚本中唯一失败的命令。

1 个答案:

答案 0 :(得分:1)

我决定使用

更改git pull
env -i git pull ssh://git@localhost/home/git/repositories/myrepo.git