Git无法从ownCloud的webdav界面克隆回购

时间:2013-03-05 23:28:12

标签: git webdav owncloud

我在自己的云上有一些个人git回购。我可以通过访问ownClouds webdav网址从2台ubuntu计算机和Windows PC克隆它:http://myserver.a/remote.php/webdav/repos/repo.git

最近我使用git版本1.8.1.5安装了Arch Linux,但它失败并显示以下错误消息: 致命:找不到http://myserver.a/remote.php/webdav/repos/repo.git/info/refs?service=git-upload-pack:你是否在服务器上运行了git update-server-info?

我确实添加了更新后的挂钩,最终它可以在我的其他机器上运行。 当git请求... info / refs?service ...

时,服务器error.log会显示404

ubuntu git 1.7从服务器请求相同的url。 但在收到错误代码404后,它会请求... / info / refs HTTP / 1.1并成功使用代码200.

那么为什么较新的git会失败,我该如何解决呢?

2 个答案:

答案 0 :(得分:4)

整个?service=...是针对1.6.6中引入的git的智能HTTP支持。它比传统的HTTP支持更有效,但需要在Web服务器上运行特殊的CGI二进制文件, 不能与WebDAV一起使用。

IMO,在任何非破坏的WebDAV实现中,它应该被忽略,但显然ownCloud认为它是文件名或其他东西的一部分,因此产生错误。与ownCloud开发者讨论这个问题可能是有意义的。

在旧版本中,git回退到没有该后缀的URL,但这有其自身的问题。因此,在1.8.0中删除了第二个请求,并引入了一个新选项,您可以使用该选项关闭智能HTTP并直接使用旧URL(这应该可以解决问题)。它的工作原理如下:

GIT_SMART_HTTP=0 git fetch

如果您从不想使用智能HTTP(但要注意它确实可以在Github和其他所有理智的托管站点上运行,并且如果没有它就推送不起作用),您可以在shell配置文件中导出该环境变量。

有关https://git.kernel.org/cgit/git/git.git/commit/?id=02572c2e3afcc200936260f48863447726212a7c的更改的详细信息。

答案 1 :(得分:0)

这现在可能更强大:“git clone(man) 来自 Git 的 SHA256 存储库,使用 SHA-1 作为默认哈希算法通过哑 HTTP 构建协议未正确设置生成的存储库,该问题已在 Git 2.32(2021 年第二季度,8 年后)中得到纠正。

请参阅 commit 00bc839Eric Wong (ele828)(2021 年 5 月 11 日)。
(2021 年 5 月 20 日于 Junio C Hamano -- gitster --commit bdff041 合并)

<块引用>

remote-curl:修复 sha256 存储库上的克隆

签字人:Eric Wong
确认:brian m。卡尔森

<块引用>

远程 https 进程需要更新它自己的 the_repository' when it sees an HTTP(S) remote is using sha256. Without this, parse_oid_hex()fails to handle sha256 OIDs when it's eventually called byparse_fetch()` 实例。

测试:

git clone https://yhbt.net/sha256test.git
GIT_SMART_HTTP=0 git clone https://yhbt.net/sha256test.git
(plain http:// also works)

通过 git:// 克隆 URL 不需要任何更改