git core.hooksPath 权限被拒绝问题

git core.hooksPath permission denied issue

我正在尝试将我的所有 git 挂钩和所有其他回购都引用到一个回购。

我的 repo 目录结构如下所示。

~/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 配置使用这个 git 挂钩目录 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 版本。

还有什么我可以尝试让它工作的吗?

您的 git 挂钩需要是 可执行文件 ,而不是目录。 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