AOSP 回购同步错误,坏对象 HEAD

AOSP repo sync error, bad object HEAD

大约一两年前,我使用并成功编译和安装了 AOSP。我正在努力恢复并 运行 在其中进行一些开发。但是,我不断收到此错误:

    Fetching projects: 100% (486/486), done.  
Traceback (most recent call last):
  File "/home/hoshi/WORKING_DIRECTORY/.repo/repo/main.py", line 500, in <module>
    _Main(sys.argv[1:])
  File "/home/hoshi/WORKING_DIRECTORY/.repo/repo/main.py", line 476, in _Main
    result = repo._Run(argv) or 0
  File "/home/hoshi/WORKING_DIRECTORY/.repo/repo/main.py", line 155, in _Run
    result = cmd.Execute(copts, cargs)
  File "/home/hoshi/WORKING_DIRECTORY/.repo/repo/subcmds/sync.py", line 675, in Execute
    project.Sync_LocalHalf(syncbuf)
  File "/home/hoshi/WORKING_DIRECTORY/.repo/repo/project.py", line 1204, in Sync_LocalHalf
    lost = self._revlist(not_rev(revid), HEAD)
  File "/home/hoshi/WORKING_DIRECTORY/.repo/repo/project.py", line 2241, in _revlist
    return self.work_git.rev_list(*a, **kw)
  File "/home/hoshi/WORKING_DIRECTORY/.repo/repo/project.py", line 2435, in rev_list
    p.stderr))
error.GitError: device/lge/mako-kernel rev-list ('^7bf237bdf8a8c6d516219dc09b3bc114aa0e863d', 'HEAD', '--'): fatal: bad object HEAD

这发生在成功 "fetching all the packages" 之后(上述终端输出的第一行)。我试过删除 WORKING_DIRECTORY 中的 .repo 文件夹并在那里重新初始化 repo。我以为它解决了问题,但可能在同步几个小时后再次出现错误!我尝试了各种 discussions/forums 的几种解决方案,但似乎无法弄清楚。

如果能帮助找到解决方案,我们将不胜感激!

我知道这个问题是一年多以前发布的,但这个答案有望对其他人有所帮助。此外,发生这种情况时令人沮丧,因为在您知道错误仍然存​​在或最终解决之前,提取可能需要几分钟。

解决方案是清除错误消息中指定的关联项目的 .git 文件夹(在本例中为 lge/mako-kernel)

$ rm -rf .repo/project-objects/device/lge/mako-kernel.git
$ rm -rf .repo/projects/device/lge/mako-kernel.git
$ rm -rf device/lge/mako-kernel/.git

请注意,如果不删除所有三个文件夹,树状态将不一致并会出现相同的错误。

这也被报告在多个项目中,所以我反复应用它,直到整个同步成功。