4

这是我到目前为止所做的:

  1. 我有一个托管网站及其 git 存储库的服务器。
  2. 我有一个名为的用户git拥有所有存储库,并且能够以任何用户身份登录而无需输入密码。
  3. 我在我的 repopost-receive的目录中创建了一个名为的钩子。hooks
  4. 我还创建了一个名为gitpull自动将信息拉到站点的脚本。

当我输入以下命令时一切正常:

su - git -c "/git/sitename.git/hooks/post-receive"

但是当我从我的开发机器中推送一些东西时,它不会运行脚本gitpull

这是我的文件:

  • /etc/gitpull

    #!/bin/bash
    su - $1 -c "cd ~/www;git pull;"
    
  • /git/sitename/hooks/post-receive

    #!/bin/bash
    /etc/gitpull sitename
    

我怎样才能解决这个问题?我究竟做错了什么?

4

1 回答 1

2

钩子需要被标记为可执行,post-receive否则 git 不会运行它。当您使用 进行测试时sh -c,您将绕过执行权限检查。

我敢打赌,如果你跑步,它会起作用chmod a+x /git/sitename.git/hooks/post-receive


所以不是这样的吧?

哦,su运行时提示输入密码,不是吗?您不能为钩子提供输入,因此您需要确保您可以/git/sitename.git/hooks/post-receive作为您的普通用户帐户自行输入,并且无需您进行任何交互即可运行它。

于 2012-11-04T19:00:08.143 回答