如何确保远程 git 用户在 post-receive 挂钩中执行某些命令?

How to ensure a remote git user executes certain commands in a post-receive hook?

希望我不会破坏对我的设置的解释。我目前正在调用 git push 到远程机器上的裸仓库以触发 post-接收挂钩,如下所示:

cd /path/to/working/tree
git pull
gatsby build && gh-pages -d public/

一切都按预期工作,直到 gh-pages 通过 GitHub 上的另一个存储库将更改推送到 GitHub 页面的部署步骤。当 post-receive 挂钩从我的本地机器上通过 git push 触发时,我得到一个 remote: Permission denied (publickey),但是当直接在远程机器上 运行 时它会成功。

尽管我的 git remote 配置指定了正确的远程用户,但我猜测当从我的本地计算机触发挂钩时,gh-pages 的执行是由另一个用户完成的。

staging [remote_user]@[remote_ip]:/path/to/bare/repo.git (fetch)
staging [remote_user]@[remote_ip]:/path/to/bare/repo.git (push)

如有任何帮助,我们将不胜感激!

I'm guessing that the execution of gh-pages is being done by a different user when the hook is triggered from my local machine

您可以通过修改 post-receive 挂钩并添加到它来检查:

id -a
export GIT_SSH_COMMAND='ssh -Tv'

这样,您将确切地看到那个挂钩上考虑了哪些 ID 和哪些 SSH 密钥。