我在自己的云上有一些个人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会显示404ubuntu git 1.7从服务器请求相同的url。 但在收到错误代码404后,它会请求... / info / refs HTTP / 1.1并成功使用代码200.
那么为什么较新的git会失败,我该如何解决呢?
答案 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 00bc839 的 Eric 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 by
parse_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 不需要任何更改