git post-receive未被触发

时间:2014-05-13 12:44:10

标签: git webserver sync

每当推送git远程存储库时,我都无法更新Web服务器root。问题如下:

我创建了一个文件update.php,它从远程仓库执行git pull,它可以工作(如果我在推送到远程仓库后,通过网络浏览器访问http://www.mydomain.com/update.php ,Web服务器中的内容是最新的。

我在remote-repo中创建了一个文件.git/hooks/post-receive来访问update.php,并通过从终端执行它来检查它是否可以手动工作(Web服务器中的内容是最新的)再次)。

但是当我将提交从local-repo推送到remote-repo时,.git/hooks/post-receive不会自动触发。

当推送远程仓库时,post-receive是否应该被自动调用?我很想知道问题是什么......我知道它已经与许可事件无关但我在网上尝试了所有改变许可的解决方案(当然,没有任何效果)。

我的post-receive - 脚本:

cd ..
env -i git reset --hard 

为什么post-receive - 脚本不会自动触发?

1 个答案:

答案 0 :(得分:0)

使用.git/hooks/post-receive-hook是完全正确的。

我建议您检查服务器用户是否具有执行它的文件系统权限。

检查执行权

登录您的远程服务器并切换到<<your-repo>>/.git/hooks,您可以调用ls -l以“长”格式列出所有可见文件。你现在应该看到类似的东西:

-rwxr-xr--   12 billythekid  unicorns      408 19 Mar  2013 post-receive
^               ^            ^                              ^
|               |            |                              |
|               + owner      + group                        + filename
|
+ file-type & permissions

第一个字符(-)告诉我们正在使用文件(而不是使用d irectory或l墨水)之后,有三个可能的三个角色rwx的权限(owner ead,group rite和e other ecute)。

现在您必须确保服务器进程是所有者或登记组的一部分,而ownergroup具有执行权。或者授予other的执行权限。

您可以使用chown修改所有权,并使用chmod修改权限。您可以在此Ubuntu community help-article中阅读有关文件权限的更多信息。