2010-01-19 53 views
8

我试图获取Android 1.6版本的源代码,但回购 同步操作一直挂起。回复同步挂起

我贴的帖子我来到这里在终端上的最后一部分:

Fetching projects: 19% (32/164) 
Initializing project platform/external/freetype ... 
remote: Counting objects: 970, done. 
remote: Compressing objects: 100% (414/414), done. 
Receiving objects: 57% (558/970), 1.28 MiB | 26 KiB/s 

它只是挂在那儿......没有错误消息或诸如此类的aything。

有没有人遇到过类似的问题?

+1

我在Ubuntu 12 LTS x86机器上遇到了这个问题。当'git'产生并最大化CPU时,它似乎始终在单个对象上进行轰炸。我试过禁用TCP窗口缩放和限制到一个线程,但没有骰子。 – 2012-11-05 20:45:16

回答

11

我不知道你是否使用VMWare来运行Linux。我遇到同样的问题,直到找到导致它的原因:我们一侧的tcp窗口大小被设置为0(全部)。我在Windows 7 64位主机上的VMWare上运行Ubuntu 10.04。为了解决这个问题,只要确保你在VMWare上给Ubuntu提供了足够的RAM来丢弃任何内存问题。我把我的设置为512MB,并将其提高到1.5M以获得更好的性能。然后最重要的设置(以及真正实现的技巧):确保将VMWare上的网络适配器设置为桥接模式。例如,如果使用NAT,NAT服务将为您扼杀并混淆窗口大小。

原因: 客户端的TCP窗口大小通知服务器它愿意一次从服务器接收的字节数;这是客户的接收窗口。当窗口设置为0时,意味着客户端将无法接收任何更多的数据,直到处理完其内部缓冲区中的任何数据尚未挂起为止。这是正常的TCP东西。在客户端上设置为0的窗口的大小效果是,TCP连接在一段时间内仍然处于活动状态,直到服务器决定他已经等待并终止连接。这是什么导致我的回购同步挂起没有错误。

+1

谢谢,这对我有用。桥接连接解决了这个问题。 – inazaruk 2010-09-24 22:40:07

+0

但是,在使用VirtualBox切换到桥接连接后,我仍遇到同样的问题。 – Joset 2012-01-05 01:51:47

+0

要为此答案添加一些更有效性,现在通过android记录:http://source.android.com/source/known-issues.html – gsingh2011 2012-12-21 21:09:37

5

希望这可以帮助指出此论坛的人。

我有这个问题的大型仓库的git克隆悬挂。最初速度会很高,然后急剧下降,最后它会挂起。这是TCP Window Scaling的一个问题。一旦被禁用,它工作正常。

(但奇怪的是,当我在VMWare的运行它在Linux,没有问题。)

要为当前会话禁用此 $须藤的sysctl -w net.ipv4.tcp_window_scaling = 0

+2

要为此答案添加一些更有效性,现在已通过android记录:source.android.com/source/known-issues.html – gsingh2011 2012-12-21 21:10:30

+0

这个修复了我,谢谢。不知何故,当我看着已知问题页面时,我并没有在这里发现它。这很奇怪,回购没有能力从失败的同步恢复。 – BHS 2013-02-19 03:48:24