22

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

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

我使用git clone --bare <some-remote-location>.

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

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

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

4

5 回答 5

26

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

于 2013-10-31T13:09:32.833 回答
10

尝试这里提到的步骤git-scm for http/s protocol

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

于 2013-10-31T13:11:07.670 回答
1

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

于 2014-04-11T04:58:44.890 回答
0

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

  • mod_alias
  • mod_cgi
  • mod_env
于 2014-12-24T03:57:15.147 回答
0

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

git clone *HTTP_path.git*
于 2017-05-10T06:27:00.707 回答