Git repo 同步 - 连接丢失
Posted
技术标签:
【中文标题】Git repo 同步 - 连接丢失【英文标题】:Git repo sync - connection lost 【发布时间】:2015-12-23 07:44:28 【问题描述】:我正在尝试下载 android 源 (Cyanogenmod)。我花了超过 12 小时下载 2.5GB 文件,现在我的连接丢失了一段时间,它显示
error: RPC failed; result=56, HTTP code = 200
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
fatal: unable to access 'https://android.googlesource.com/platform/prebuilts/misc/': Could not resolve host: android.googlesource.com
fatal: unable to access 'https://github.com/CyanogenMod/android_packages_inputmethods_LatinIME/': Could not resolve host: github.com
fatal: unable to access 'https://android.googlesource.com/platform/prebuilts/misc/': Could not resolve host: android.googlesource.com
error: Cannot fetch CyanogenMod/android_packages_inputmethods_LatinIME
error: Cannot fetch platform/prebuilts/misc
error: Exited sync due to fetch errors
我可以恢复下载还是从头开始下载,请帮我恢复下载。 谢谢!
【问题讨论】:
【参考方案1】:应用我在下面描述的修复程序后,您只需重新运行 repo sync
即可恢复并完全完成被这些致命错误中断的资源同步过程。
您遇到的与 DNS 相关的错误 [fatal: Could not resolve host
] 的解决方案在 Google 的 AOSP Developer Site 的已知问题解决页面上有详细说明。通过在开发机器的 /etc/hosts
配置文件中为远程存储库 android.googlesource.com
添加适当的主机条目来应用此修复。从clicking here 和here 开始执行免费网络资源提供的IP 地址查找工具:http://network-tools.com/nslook/。
Google 对此问题的完整描述以及详细的解决方案,我已在此处提供:
难以同步源树(DNS 问题)。
症状:运行 repo sync 时,进程失败并出现各种错误 与不识别主机名有关。一个这样的错误是
<urlopen error [Errno -2] Name or service not known>
。 编辑:另一个致命错误可能是Could not resolve host
。原因:一些 DNS 系统难以应对高数字 同步源树所涉及的查询数(可能有几个 最坏情况下的一百个请求)。
修复:手动解析相关主机名,并对这些主机名进行硬编码 本地结果。
您可以使用 nslookup 命令解决它们,该命令将为您提供 每一个都有一个数字 IP 地址(通常在“地址”中 部分输出)。
$ nslookup googlesource.com
$ nslookup android.googlesource.com
然后您可以通过编辑 /etc/hosts 在本地硬编码它们,并添加两个 该文件中的行,格式为:
aaa.bbb.ccc.ddd googlesource.com
eee.fff.ggg.hhh android.googlesource.com
请注意,这只会在 服务器的地址不会改变,如果他们改变了你就无法连接 您必须再次解析这些主机名并编辑 etc/hosts 相应地。
【讨论】:
@Spartan DNS 失败的原因并不是 DNS 设置配置不当。事实上,repo
会迅速生成许多并发的、重复的 DNS 请求。然后,repo
致命失败,因为 DNS 服务器响应被判断为太慢,即没有响应。【参考方案2】:
你don't resume a clone,你可以try a shallow clone instead。
这里提到:
Error code 56
表示 curl 接收错误CURLE_RECV_ERROR
,这意味着在克隆过程中存在阻止数据接收的问题。 这通常是由网络设置、防火墙、*** 客户端 or anti-virus 在传输所有数据之前终止连接引起的。
您可以通过以下方式了解更多信息:
set GIT_TRACE_PACKET=1
set GIT_TRACE=1
set GIT_CURL_VERBOSE=1
你可以试试changing http.postBuffer
或者切换到ssh url clone。
【讨论】:
【参考方案3】:Spartan 我检查了 Cyanogenmod 的工作正常,我更喜欢使用 Internet 下载管理器。我下载 60mp 并调用它。成功获取并恢复。
【讨论】:
【参考方案4】:无法解析主机:android.googlesource.com
这可能是 DNS 服务器问题。首先尝试restarting your modem 以刷新其 DNS 缓存。如果您仍然遇到问题,请尝试 changing your Primary DNS 访问 Google 运营的这两个公开的 DNS 服务器之一:
8.8.8.8 8.8.4.4请注意,如果您的主 DNS 已经按照描述进行了配置,并且您还长时间重启了路由器而没有解析(双关语),那么调整您的主 DNS 配置以指向其他公共 DNS 服务器不太可能解决你的情况。但是,有信誉的免费公共服务器列表can be found here。
【讨论】:
以上是关于Git repo 同步 - 连接丢失的主要内容,如果未能解决你的问题,请参考以下文章
sh [Git Repo和Github Sync]放置在git仓库的根目录并从cron运行以安排与远程仓库同步#sync #github #repo
repo/repo init-解决同步源码Cannot get http://gerrit.googlesource.com/git-repo/clone.bundle