钩子脚本中的GIT克隆导致空目录

时间:2016-05-12 21:29:15

标签: git gitlab githooks

我真的不知道该去哪儿,并尝试过我能想到的一切。

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

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

(返程) 克隆到' 999'

同样,如果我从同一个用户的命令行运行相同的克隆命令,我就不会遇到这个问题,所以我不认为这是一个允许的事情。

关于我可以从哪里去的任何指示?

谢谢!

1 个答案:

答案 0 :(得分:1)

我无法重现这个问题,但这可能是因为你的Git版本比我的版本旧了(我的2.8.1和2.6为单独的工作目录添加了新的选项,改变了很多有问题的代码;我没有&#39 ;你知道你有什么版本,但我打赌它早于2.6)。所以这可能不是正确的解决方案,但话又说回来。 : - )

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

如果是这样,在执行unset GIT_DIR之前,只需在脚本中git clone