3

我有一个托管在 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 已更新。但是,不会运行 post-receive 挂钩。如果我手动运行钩子,它运行良好并更新工作目录。

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

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

谢谢。

4

1 回答 1

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,否则它将不起作用。

于 2013-02-17T19:00:47.520 回答