【问题标题】:can't clone git repos via http; info/refs not found无法通过 http 克隆 git repos;未找到信息/参考
【发布时间】:2013-11-10 23:26:43
【问题描述】:

我正在尝试使 git 存储库可用于通过 http 进行只读访问。

我正在以旧式方式执行此操作,因为 git-http-backend 在我的主机系统上不可用。也就是说,我只是将裸存储库放在 http 可访问的位置。

我使用git clone --bare <some-remote-location> 在主机上成功创建了裸存储库。

现在,当我使用 git clone http://my.host.name/location 将 git 指向新克隆时,一条消息报告 repository not found

当我捕获网络流量时,我看到 git 正在尝试访问 http://my.host.name/location/info/refs。这预计会失败,因为存储库中没有 info/refs 路径。而是直接在存储库根目录下有inforefs 目录。

显然,克隆的裸存储库的结构不符合客户的预期。有谁知道为什么会这样?

【问题讨论】:

    标签: git http repository clone git-bare


    【解决方案1】:

    您需要在服务器上运行git update-server-info 以生成“哑协议”工作所需的文件。

    【讨论】:

    • 另外,您需要在裸存储库中执行此操作
    【解决方案2】:

    尝试here on git-scm for http/s protocol提到的步骤。

    基本上,在执行git clone --bare <path-to-repository> 之后,您需要在裸存储库中运行mv hooks/post-update.sample hooks/post-update,然后执行一次git update-server-info,然后您应该能够克隆存储库。

    【讨论】:

      【解决方案3】:

      当远程在 git 存储库 1.7.X 上运行并且 git 客户端是 1.8.X 时,我遇到了这个问题;我通过将我的客户端降级到 1.7.X 来证明这一点——这解决了这个问题。因此,请确保 git 在“客户端”和“服务器”端是相同的版本。我正在运行的命令是 git clone 。

      【讨论】:

      【解决方案4】:

      还记得检查所需的模块是否已在 apache 上启用。这些是 git over HTTP 所需的模块:

      • mod_alias
      • mod_cgi
      • mod_env

      【讨论】:

        【解决方案5】:

        我在尝试克隆 gitlab 项目时遇到了同样的错误,因为我设置了错误的路径!
        我采用了SSH 路径而不是HTTP 路径。 (+ 不要忘记.git)

        git clone *HTTP_path.git*
        

        【讨论】:

          猜你喜欢
          • 2012-03-01
          • 1970-01-01
          • 2018-11-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-07-03
          相关资源
          最近更新 更多