回购同步挂起

rah*_*hul 8 git android sync repository

我试图获得Android 1.6版本的源代码,但是repo sync操作一直悬而未决.

我正在粘贴终端上的消息的最后部分:

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
Run Code Online (Sandbox Code Playgroud)

它只是挂在那里......没有错误信息或那种东西.

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

小智 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连接将保持活动一段时间,直到服务器确定他已经等待并终止连接.这是导致我的repo同步挂起而没有错误的原因.


小智 5

希望这有助于有人推荐这个论坛.

我有这个问题的大型存储库的git克隆挂起.最初速度会很高,然后急剧下降,最后它会挂起.这是TCP窗口缩放的一个问题.一旦被禁用,它工作正常.

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

要为当前会话禁用此功能$ sudo sysctl -w net.ipv4.tcp_window_scaling = 0

  • 为了给这个答案增加更多的有效性,现在由android:source.android.com/source/known-issues.html记录 (2认同)

Von*_*onC 0

九月份 SO 上也出现过类似的问题。

它可能与网络速度相关,或者与您正在使用的 Git 的确切版本相关。
如果是msysgit,请更新到最新版本。
另请参阅msysgit 问题 361