由于频繁的互联网断开,repo同步卡在99%

时间:2017-06-18 17:49:01

标签: android git vmware cyanogenmod repo

我尝试重新同步cyanogenmod来源。直到99%的阶段,但似乎在这个阶段有一个大文件,并且由于我的互联网连接频繁断开,它无法下载它。

每次断开连接时,都会打印fatal: early EOFrepo sync会停止,看起来在下一次运行中,它会从头开始启动此文件,尽管之前保存了一个临时对象

有没有办法告诉repo sync从下一次运行开始,从它在特定文件中停止的点开始,而不是从头开始?

我尝试在一个无限循环中运行repo sync,但是下载没有结束,而是我的记忆已经满了。

时态文件位于~/android/system/.repo/project-objects/CyanogenMod/android_frameworks_base.git/objects/pack文件夹下,格式为:

 78M    tmp_pack_7JhRgA
 106M   tmp_pack_fprjIZ
 523M   tmp_pack_tydAd5
 436M   tmp_pack_po9dEw
 780M   tmp_pack_rewDSS

我还尝试在每次新的repo同步之前删除这些临时文件以避免完整内存,但它仍然无法帮助结束下载。顺便说一句,似乎删除它们不会使下一次运行从另一个点开始,所以它确认了它在下次运行中忽略它们的怀疑。

我运行的确切repo sync命令是repo sync -j4 -f -c

repo init命令是: repo init -u https://github.com/CyanogenMod/android.git -b cm-13.0

互联网断开连接后打印的错误是:

Fetching projects:  94% (497/528)  Fetching project   CyanogenMod/android_frameworks_opt_vcard
Fetching project CyanogenMod/android_hardware_qcom_audio00 KiB/s   
Fetching projects:  96% (507/528)  Fetching project    CyanogenMod/android_hardware_qcom_audio00 KiB/s   
Fetching project CyanogenMod/android_hardware_qcom_audio00 KiB/s   616668), 4.93 MiB | 131.00 KiB/s   
Fetching project CyanogenMod/android_hardware_qcom_audio00 KiB/s   616668), 5.12 MiB | 123.00 KiB/s   
Fetching project CyanogenMod/android_hardware_qcom_audio00 KiB/s   
Fetching project CyanogenMod/android_hardware_qcom_audio00 KiB/s   
Fetching projects:  99% (523/528)  Fetching project CyanogenMod/android_hardware_qcom_audio
Fetching project CyanogenMod/android_hardware_qcom_audio00 KiB/s   
error: RPC failed; curl 56 GnuTLS recv error (-54): Error in the pull function.
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed

2 个答案:

答案 0 :(得分:0)

我刚刚尝试了以下命令,同步已经过了。我得到了所有的项目

repo init -u https://github.com/CyanogenMod/android.git -b cm-13.0`
repo sync -j8 -q -c --no-tags`

repo sync的-c/--current-branch选项使repo只获取你真正需要的分支而不是每个git的所有分支。

--no-tags避免同步所有标记

使用-c和--no-tags可以让你下载更少,因此同步更快。

如果你想让它更快,你可以尝试--depth=<n>,但这将修剪git历史。

互联网断开后,repo有效地从中断的地方回来。它再次从项目列表开始工作,可以为已经处理的项目获取一些新数据。

但它在之前已同步的项目中移动得非常快,因为之前获取的所有数据都存在于 .repo 目录中。

我希望确保您在断开连接后每次都没有repo init

答案 1 :(得分:0)

最后,似乎问题得到了增强,因为使用VMWare运行Ubuntu机器。不知何故,VMWare导致互联网接口频繁断开,当我尝试使用VirtualBox时,虽然偶然发生fatal: early EOF,但最终互联网接口足够稳定以完成同步。