我真的无法弄清楚为什么会这样。
在我的系统中,我使用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
是脚本中唯一失败的命令。
答案 0 :(得分:1)
我决定使用
更改git pull
env -i git pull ssh://git@localhost/home/git/repositories/myrepo.git