这是我到目前为止所做的:
>我有一个托管网站及其git存储库的服务器.
>我有一个名为git的用户拥有所有repos,并且能够以任何用户身份登录而无需输入密码.
>我在我的repo上的hooks目录中创建了一个名为post-receive的钩子.
>我还创建了一个名为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
我怎样才能解决这个问题?我究竟做错了什么?
最佳答案 post-receive hook需要标记为可执行文件,否则git将不会运行它.使用sh -c进行测试时,您将绕过执行权限检查.
我打赌如果你运行chmod a x /git/sitename.git/hooks/post-receive它会工作.
那不是吗,对吧?
哦,su运行时会提示输入密码,不是吗?您无法为挂钩提供输入,因此您需要确保您可以将/git/sitename.git/hooks/post-receive单独输入为普通用户帐户,并让它在没有您进行任何交互的情况下运行.