【问题标题】:GIT clone from hook script results in empty directory钩子脚本中的 GIT 克隆导致空目录
【发布时间】:2016-05-12 21:29:14
【问题描述】:

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

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

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

(返回) 克隆到'999'

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

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

谢谢!

【问题讨论】:

    标签: git gitlab githooks


    【解决方案1】:

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

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

    如果是这样,只需在您的脚本中添加unset GIT_DIR,然后再执行git clone

    【讨论】:

    • 就是这样!非常感谢。我永远不会得到这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-30
    • 2012-05-06
    • 2021-04-11
    • 1970-01-01
    • 2012-06-07
    • 2012-03-15
    相关资源
    最近更新 更多