Git钩子在远程存储库上不起作用

时间:2013-07-22 19:00:39

标签: git apache samba githooks

我有一个远程Git裸存储库托管在Ubuntu Linux虚拟机上,其上有Apache,可通过本地网络中的http访问。 当我配置我的服务器时,我使用了本手册:http://blog.bobbyallen.me/2012/07/23/installing-a-git-server-using-apache-webdav-on-ubuntu-server-12-04/

我打算将此存储库传播到我的网站(具有非裸存储库),而Ubuntu可以通过Samba共享访问它的目录。

所以,有这样的事情:

|我的电脑| ==推==> | http://user@myhub.git/myproject.git| ==(收到后挂钩)==> | /桑巴/ mywebsite / |

我的想法是编写一个post-receive钩子,当我从IDE(PhpStorm)推送更改时会执行类似的操作:

#!/bin/sh
echo "Pulling content from hub to website"
echo "Pulling content from hub to website" >> /tmp/git.log
cd /samba/mywebsite/ || exit
unset GIT_DIR
git pull hub master

cd /var/www/myproject.git
git update-server-info

当然,在此之前我在我的网站存储库中声明:

git remote add hub /var/www/myproject.git

问题是当我从IDE执行push时,我的post-receive挂钩没有运行:我没有看到任何先写入带有回声的行的结果(也不是在IDE日志中,也不是在/ tmp / git中) .log文件)。请注意,推送本身会成功执行。

事实上,问题更深层次:钩子根本不会启动。我尝试了post-receive,update和post-update挂钩,但没有...我在每一个中放置了类似“echo 111>> /tmp/git.log”的行,但没有任何反应。

此外,当我尝试手动启动这些钩子时,一切正常,网站接收更新:

sudo -u www-data ./post-receive

当然,我确实有用户www-data的读/写/执行权限,而且www-data拥有/ var / www目录中的所有内容。实际上,我为该目录中的所有内容设置了0777权限。

我尝试从IDE手动执行git push origin - 结果相同。 我甚至尝试使用!#/ bin / sh和!#/ bin / bash - 没有效果。

UPD:

我在服务器上执行了此操作:

cd ~
git clone /var/www/myproject.git
cd myproject
echo "newline">>README.txt
commit -a -m "Test commit"
git push origin

奇迹正在发生 - 它奏效了!我看到主回购中的答案,钩子按此顺序执行:更新,收件后,更新后。

所以,我认为,推送http更改时遇到了一些问题。但我不知道为什么会这样。

1 个答案:

答案 0 :(得分:2)

问题与Git push over HTTP not activating remote hooks重复。

简而言之,必须按照here所述配置Git。