macOS Catalina 10.15.2下repo sync报错原因咨询
结合你给出的环境(macOS Catalina 10.15.2、repo v1.13.8、git 2.23.0、Python 2.7.16),这两个报错的常见原因可以拆解为以下几点:
网络稳定性与并发数问题
repo sync -j6 -f中的-j6是开启6线程并发同步,如果你当前网络环境不稳定(比如跨国连接、带宽不足),高并发很容易导致部分仓库的git fetch操作超时或失败,直接触发"error: Exited sync due to fetch errors"。另外,macOS Catalina的网络代理设置冲突、防火墙拦截git的HTTP/SSH请求,也会导致fetch失败。Git与Repo版本兼容性冲突
你使用的repo v1.13.8属于较旧版本,而git 2.23.0在垃圾回收(gc)的逻辑上和旧版repo存在适配问题。当repo完成批量fetch后,会触发git gc操作清理冗余对象,旧版repo对git 2.23.0的gc输出或返回值处理不当,就会抛出"error: Exited sync due to gc errors"。Repo启动器与核心版本不匹配
repo启动器版本1.26和核心repo v1.13.8版本差距较大,两者的内部通信逻辑可能存在冲突,尤其是在同步流程的收尾gc阶段,启动器传递的指令或参数被旧版repo无法正确解析,进而引发错误。磁盘权限与空间问题
macOS Catalina的权限管控非常严格:如果你的同步目录没有完整的读写权限,或者磁盘剩余空间不足,git在执行gc操作时(需要创建临时文件、清理仓库对象)会因为权限不足或空间不够失败,最终导致repo抛出gc errors。另外系统完整性保护(SIP)如果限制了同步目录的操作,也可能触发这类问题。Python环境的潜在异常
虽然repo原生支持Python2.7,但Catalina自带的Python2.7.16可能存在环境变量缺失、依赖库损坏的情况。repo的gc相关逻辑依赖Python脚本执行,如果脚本运行时出现异常,也会间接导致gc errors。
内容的提问来源于stack exchange,提问作者唐老鸭

