来自钩子脚本的GIT克隆导致目录为空

来自钩子脚本的GIT克隆导致目录为空,git,gitlab,githooks,Git,Gitlab,Githooks,我真的不知道该拿这个去哪里,我已经尝试了我能想到的一切 我有一个运行在Ubuntu 14.04上的GitLab服务器。我已经创建了一个post-receive-hook脚本(bash),它将repo克隆到/tmp目录中的一个新文件夹中,然后将文件复制到挂载的远程目录中。如果我在登录git用户时运行脚本,脚本运行正常,但当它作为钩子脚本运行时,它不会。脚本开始正常运行,但git clone命令的结果是一个完全空的文件夹。甚至没有任何回购文件。另外,我没有从clone命令中得到任何错误。clone命

我真的不知道该拿这个去哪里,我已经尝试了我能想到的一切

我有一个运行在Ubuntu 14.04上的GitLab服务器。我已经创建了一个post-receive-hook脚本(bash),它将repo克隆到/tmp目录中的一个新文件夹中,然后将文件复制到挂载的远程目录中。如果我在登录git用户时运行脚本,脚本运行正常,但当它作为钩子脚本运行时,它不会。脚本开始正常运行,但git clone命令的结果是一个完全空的文件夹。甚至没有任何回购文件。另外,我没有从clone命令中得到任何错误。clone命令仅返回一行:

(我的命令) git克隆file:///var/opt/gitlab/git-data/..../999.git 999

(返回) 克隆成“999”

同样,如果我从同一个用户的命令行运行同一个clone命令,我没有这个问题,所以我认为这不是权限问题

我可以从这里走到哪里


谢谢

我无法重现这个问题,但这可能是因为您的Git版本比我的版本旧(我的版本是2.8.1和2.6,为单独的工作目录添加了新选项,更改了很多相关代码;我不知道您的版本是什么,但我打赌它早于2.6)。因此,这可能不是正确的解决方案,但也可能是::-)

当钩子脚本运行时,它们有一个环境变量,
GIT_DIR
,设置为包含存储库的路径。对于
post-receive
s,这始终只是
(post-receive钩子运行在存储库目录中)。这似乎是导致克隆失败的原因


如果是这样,只需在脚本中
取消GIT_DIR
设置,然后再执行
GIT克隆

就是这样!非常感谢。我永远不会得到这个。