我正在尝试使用所有的githooks创建一个回购协议,其他所有回购协议都引用了该协议。
我的仓库目录结构如下。
~/dev/githooks/.git/hooks
|-> pre-push
|-> prevent-master
prevent-master
#!/bin/sh
branch_blocked="master"
if grep -q "$branch_blocked"; then
echo "Branch '$branch_blocked' is blocked by yourself." >&2
exit 1
fi
现在,我告诉我的git配置使用此githook目录git config core.hooksPath ~/dev/githooks/.git/hooks
在一个单独的仓库中,我正尝试推送
clickthisnick$ git push
fatal: cannot exec '/Users/clickthisnick/dev/githooks/.git/hooks/pre-push': Permission denied
我有chmod -R +xr ~/dev/githooks
,并且正在使用支持该git version 2.17.2
的git版本。
还有什么我可以尝试使它起作用的吗?
答案 0 :(得分:1)
您的git hook需要是一个可执行文件,而不是目录。 git将尝试调用:
/Users/clickthisnick/dev/githooks/.git/hooks/pre-push
但是您已将此目录配置为包含钩子(prevent-master
)而不是文件的目录。而是,重命名:
/Users/clickthisnick/dev/githooks/.git/hooks/pre-push/prevent-master
到
/Users/clickthisnick/dev/githooks/.git/hooks/pre-push