git 克隆以 Broken Pipe 结束
git clone ends with Broken Pipe
我有一个非常大的 git 存储库,想从中克隆。在 一台机器上(ArchLinux git 版本 2.2.2) 一切正常...
Cloning into 'foo'
remote: Counting objects: 2372505, done
remote: Compressing objects: 100% (456914/456914), done.
Receiving objects: 100% (2372505/2372505), 3.81 GiB | 6.20 MiB/s, done.
...
... 但是 在另一台机器上(Ubuntu 与 git 版本 2.3.0,也尝试过 1.7.0.4),我只看到以下:
Cloning into 'foo'
remote: Counting objects: 2372505, done.
几个小时后,它以
结束
Write failed: Broken pipe
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
知道问题出在哪里吗?
顺便说一句:
- 远程端是 git实验室服务器。
- 我在这两种情况下都使用 SSH。
- 第一台(工作中的)机器通过 VPN 连接 (100 MBit/s)。
- 第二台(不工作的)机器与 gitlab 服务器在同一个千兆子网中。
关于 GitLab,this thread 提及(对于类似的错误)
I solved that issue (unable to checkout large repo' via HTTP) by editing git/config/unicorn.yml
and setting timeout to 120, when it was previously 30, and restarting the gitab service.
如果这不仅与 Git 托管服务器有关,而且与 Git 本身有关,那么您还有其他选择可以尝试:
- The remote end hung up unexpectedly while git cloning
- fatal: early EOF fatal: index-pack failed
解决了!我使用了一个DNS名称来连接gitlab服务器,我不知道的是:这个名称已被解析为同一服务器的外部IP , 所以,服务器和客户端不在同一个子网中。
因此,客户端连接到服务器的外部 IP,因此防火墙必须将其 NAT 返回到服务器。
解决方案 非常简单:我只是将带有内部 IP 的主机名添加到客户端计算机的 /etc/hosts
文件中,然后从中克隆工作就像一个魅力.
对我来说,在尝试了网上找到的所有建议后,发现 VPN 连接不断地连接和断开。似乎如果有太多 "network outages" 或有损网络,git 克隆 "jams" 最终你会收到 Broken pipe-error 消息。
要调试,如果有任何实际流量在进行,您可以使用
iptraf
或
tcpdump -ni eth0 host github.com
在我的例子中,最初有 2MB/s 的稳定流量,但几秒钟后,底层连接中断,克隆流再也没有恢复,直到我修复了 OpenVPN 连接以保持更稳定.
我有一个非常大的 git 存储库,想从中克隆。在 一台机器上(ArchLinux git 版本 2.2.2) 一切正常...
Cloning into 'foo'
remote: Counting objects: 2372505, done
remote: Compressing objects: 100% (456914/456914), done.
Receiving objects: 100% (2372505/2372505), 3.81 GiB | 6.20 MiB/s, done.
...
... 但是 在另一台机器上(Ubuntu 与 git 版本 2.3.0,也尝试过 1.7.0.4),我只看到以下:
Cloning into 'foo'
remote: Counting objects: 2372505, done.
几个小时后,它以
结束Write failed: Broken pipe
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
知道问题出在哪里吗?
顺便说一句:
- 远程端是 git实验室服务器。
- 我在这两种情况下都使用 SSH。
- 第一台(工作中的)机器通过 VPN 连接 (100 MBit/s)。
- 第二台(不工作的)机器与 gitlab 服务器在同一个千兆子网中。
关于 GitLab,this thread 提及(对于类似的错误)
I solved that issue (unable to checkout large repo' via HTTP) by editing
git/config/unicorn.yml
and setting timeout to 120, when it was previously 30, and restarting the gitab service.
如果这不仅与 Git 托管服务器有关,而且与 Git 本身有关,那么您还有其他选择可以尝试:
- The remote end hung up unexpectedly while git cloning
- fatal: early EOF fatal: index-pack failed
解决了!我使用了一个DNS名称来连接gitlab服务器,我不知道的是:这个名称已被解析为同一服务器的外部IP , 所以,服务器和客户端不在同一个子网中。
因此,客户端连接到服务器的外部 IP,因此防火墙必须将其 NAT 返回到服务器。
解决方案 非常简单:我只是将带有内部 IP 的主机名添加到客户端计算机的 /etc/hosts
文件中,然后从中克隆工作就像一个魅力.
对我来说,在尝试了网上找到的所有建议后,发现 VPN 连接不断地连接和断开。似乎如果有太多 "network outages" 或有损网络,git 克隆 "jams" 最终你会收到 Broken pipe-error 消息。
要调试,如果有任何实际流量在进行,您可以使用
iptraf
或
tcpdump -ni eth0 host github.com
在我的例子中,最初有 2MB/s 的稳定流量,但几秒钟后,底层连接中断,克隆流再也没有恢复,直到我修复了 OpenVPN 连接以保持更稳定.