Git post-receive hook没有触发外部脚本

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

>我有一个托管网站及其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单独输入为普通用户帐户,并让它在没有您进行任何交互的情况下运行.

点赞