git clone以Broken Pipe结尾

时间:2015-02-09 07:26:51

标签: git ssh git-clone

我有一个非常大的git存储库,想要从中克隆它。在一台机器上(带有git版本2.2.2的ArchLinux)一切正常......

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

知道问题是什么吗?

顺便说一下:

  • 远程端是一个gitlab服务器。
  • 我在两种情况下都使用SSH。
  • 第一台(工作)机器通过VPN(100 MBit / s)连接。
  • 第二台(非工作)机器与gitlab服务器位于同一千兆位子网中。

3 个答案:

答案 0 :(得分:1)

关于GitLab,this thread提及(针对类似错误)

  

我通过编辑git/config/unicorn.yml并将超时设置为120(之前为30)并重新启动gitab服务来解决该问题(无法通过HTTP检出大型回购)。

如果这不仅仅是关于Git托管服务器,而是关于Git本身,那么您还可以尝试其他选项:

答案 1 :(得分:1)

解决了!我使用DNS名称连接到gitlab服务器,而我不知道:这个名称已解析为同一服务器的外部IP,因此,服务器和客户端不在同一子网中

因此,客户端连接到服务器的外部IP,因此防火墙必须将NAT重新连接回服务器。

解决方案非常简单:我只是将带有内部ip的主机名添加到客户端计算机的/etc/hosts文件中,并且克隆上的主机名就像魅力一样。

答案 2 :(得分:0)

对我来说,在尝试了所有在网络上找到的建议后,事实证明VPN连接一直在不断地连接和断开。看来,如果有太多的“网络中断”或有损网络,则git clone“ jams”,最终您会收到Broken pipe-error消息。

要进行调试,如果发生任何实际流量,可以使用

iptraf

tcpdump -ni eth0 host github.com

在我的情况下,最初有2MB / s的稳定流量,但几秒钟后,基础连接断开,克隆流再也无法恢复,直到我修复OpenVPN连接以保持稳定为止。 / p>