运行 repo sync 出现错误:因获取错误退出同步。

31

我试图同步我的jb库,但是收到了一个奇怪的错误。 有趣的是它并不总是在同一点崩溃(虽然这可能只是一个同步问题,因为我添加了-j10)。

命令: $ repo sync -j10

错误: error: Exited sync due to fetch errors

我知道重新开始的可能性,但这有些烦人,而且我经常遇到此问题。

有人能建议一个更快的解决方案吗?

7个回答

58

好的,感谢您的努力,我在这里找到了一个类似的问题(链接)

总结:

执行$ repo sync -f -j10解决了问题。

似乎-f--force-broken标志允许它从网络错误中恢复,更重要的是可以在损坏/丢失对象时恢复。


你知道“-j10”是什么意思吗? - Ahmad Kayyali
谢谢dolbi,我认为这与使用make -j 4相同,但是在make命令中的N表示核心数。 - Ahmad Kayyali
在 make 中,N 仍然是任务的数量,使用 make 建立所有内容。GNU make 可以通过 -jN 参数处理并行任务,并且通常使用的任务数量 N 在计算机构建时使用的硬件线程数的1到2倍之间。例如,在双 E5520 计算机(2个 CPU,每个 CPU 4个内核,每个内核2个线程)上,最快的构建命令为 make -j16 和 make -j32。 - SpyZip
1
@dolbi 谢谢!这节省了我很多时间!! - bluefalcon
警告:-f / --force-broken现在是默认行为,并且选项已被弃用。--force-sync仍然有效。 - rickfoosusa

9

repo sync -j1 -f --force-sync

这个命令可以解决cm13.0同步错误的问题。


5

许多人都存在一个重大的事实性错误!他们认为,如果 repo sync 失败了,就必须重新开始下载,但这是不正确的!一旦在出现错误或手动终止后重新启动 repo sync,它将从之前被终止的地方继续同步,并且只更新已经在 Github 上更新的现有文件。我可以从自己的经验告诉你这一点。

另外一个提示:在 repo sync 完成后,千万不要删除 .repo 文件夹。如果这样做,repo 工具会在下次运行 repo sync 时重新下载所有代码,而不是仅仅更新它们!


我在多个代码库中发现了一些不必要的更改,之前运行了 repo rebase 命令,但只会让情况变得更糟。由于至少有一个代码库正在进行 rebase 操作,而另一个代码库存在错误的跟踪信息(损坏的清单?)以及一些已推送但未合并的提交,因此 repo sync -f 无法完成。在这种情况下,强制标志被证明是无用的。我只想让该死的东西用 origin/master 替换我的工作树。rm -rf <affected subrepos> && repo sync 可以干净地完成任务。Repo sync 经常失败,但 rm 从来没有。 - Xeverous

2

删除出现错误的项目,然后再次同步该项目。这对我有用。


2

我通过使用强制同步选项来解决了这个问题。

repo sync --force-sync

请尝试相同的操作......如果仍然出现错误,则尝试系统强制,即

repo sync --force-sync system/core

2
已经有一个建议使用force-sync的答案了。考虑给该答案点赞或在评论中表达你的想法,而不是发布一个新的答案。 - vijayst

1
我遇到了这个问题。我尝试了很多次,但都没有成功。即使如此,我有时也会添加-f参数。
最后,我删除了.repo/projects/xxx项目,再次进行repo同步,它就起作用了。

0

移除,

rm -rf .git/rebase-apply
rm -rf .git/refs

对我有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接