Git 接收后钩子无法正常工作



我有一个带有git存储库的服务器。每次我推送到该服务器时,我都想为该存储库重新生成我的 gitstats 文档。

在那台机器中,如果我执行以下命令,gitstats 文档它会正确刷新:

gitstats /home/<username>/<proyect-name>/htdocs/ /home/<username>/gitstats

这是我在该服务器的存储库中的接收后钩子:

#!/bin/sh
gitstats /home/<username>/<proyect-name>/htdocs/ /home/<username>/gitstats
因此,当我推送到该

机器时,它会尝试执行该命令,但它无法正常工作,推送后的输出消息包含以下错误消息:

remote: fatal: Not a git repository: '.'

如果我从钩子中删除该命令,则不会收到任何错误消息。

我不明白为什么该命令直接在服务器上执行时工作正常,而在推送后执行时则不行。

有什么建议吗?

问题是在该

钩子中执行 gitstat 时可能没有正确设置GIT_WORK_TREE和/或GIT_DIR

尝试在 gitstat 命令之前设置它们:

GIT_DIR=/home/<username>/<proyect-name>/.git
GIT_WORK_TREE=/home/<username>/<proyect-name>
gitstats ... 

为什么这些变量设置不正确?
例如,请参阅"从git post-update钩子调用'git pull '"

最终,我们把我们的 Linux 大师找过来了,他注意到 git 用户在钩子里运行时运行的环境是完全不同的。

在这种情况下,您的<username>不会是执行钩子时您认为的那个......

最新更新