Git post-receive hook在推送后没有运行

时间:2013-02-17 15:00:11

标签: git amazon-ec2

我在Amazon EC2实例(运行Ubuntu 12.04)上托管了一个网站。我希望能够使用git将更改推送到服务器,然后使用post-receive挂钩在工作目录中签出。因此,在hooks目录中的服务器上,我有一个名为post-receive的文件,其中包含:

#!/bin/sh
GIT_WORK_TREE=/home/ubuntu/beta git checkout -f

该文件具有以下权限:-rwxrwxr-x(即它是可执行的)。

在我的本地计算机上,当我推送到服务器上的git repo时,推送成功并更新了git repo。但是,后接收挂钩不会运行。如果我手动运行钩子,它运行正常并更新工作目录。

git push通过SSH执行并使用相同的用户,就像我手动运行挂钩一样。

为什么钩子不能自动运行的任何想法?

感谢。

1 个答案:

答案 0 :(得分:3)

我已经设置了一个本地相同的测试(即我从本地文件夹克隆),它工作正常。

要查看脚本是否完全执行,我添加了一个简单的触摸来查看它是否修改了任何文件

我的收件后看起来像这样

#!/bin/sh

touch /Users/raven/git_tests/live/.git/hooks/i_ve_been_run
GIT_WORK_TREE=/Users/raven/git_tests/live git checkout -f

确保您的挂钩名称正确post-receive,否则无效。

相关问题