2014-11-25 5 views
0

Я пытаюсь загрузить исходный код Android и следую процедуре, описанной в https://source.android.com/source/downloading.html, который состоит из установки сценария репо, а затем запускаетсяrepo sync приводит к «фатальному: не репозиторий git:« work_dir/.repo/projects/external/ipsec-tools.git »

$ repo init -u https://android.googlesource.com/platform/manifest 
$ repo sync 

, чтобы получить основную ветку. Я также попытался использовать флаги -f -j1, чтобы пройти через ошибки и использовать только одно ядро, как было предложено где-то в Интернете. На данный момент, я думаю, что я очень близок к тому, чтобы загрузить всю вещь, но она будет неизменно останавливаться до конца при работе с ipsec-инструментами. Он всегда дает следующий результат:

Fetching project platform/external/ipsec-tools 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100  1 100  1 0  0  3  0 --:--:-- --:--:-- --:--:--  3 
100 1690k 100 1690k 0  0 2307k  0 --:--:-- --:--:-- --:--:-- 2307k 
fatal: Not a git repository: '/home/sebastian/WORKING_DIR/.repo/projects/external/ipsec-tools.git' 
fatal: Not a git repository: '/home/sebastian/WORKING_DIR/.repo/projects/external/ipsec-tools.git' 
fatal: Not a git repository: '/home/sebastian/WORKING_DIR/.repo/projects/external/ipsec-tools.git' 
Traceback (most recent call last): 
    File "/home/sebastian/WORKING_DIR/.repo/repo/main.py", line 500, in <module> 
    _Main(sys.argv[1:]) 
    File "/home/sebastian/WORKING_DIR/.repo/repo/main.py", line 476, in _Main 
    result = repo._Run(argv) or 0 
    File "/home/sebastian/WORKING_DIR/.repo/repo/main.py", line 155, in _Run 
    result = cmd.Execute(copts, cargs) 
    File "/home/sebastian/WORKING_DIR/.repo/repo/subcmds/sync.py", line 635, in Execute 
    fetched = self._Fetch(to_fetch, opt) 
    File "/home/sebastian/WORKING_DIR/.repo/repo/subcmds/sync.py", line 339, in _Fetch 
    self._FetchProjectList(**kwargs) 
    File "/home/sebastian/WORKING_DIR/.repo/repo/subcmds/sync.py", line 234, in _FetchProjectList 
    success = self._FetchHelper(opt, project, *args, **kwargs) 
    File "/home/sebastian/WORKING_DIR/.repo/repo/subcmds/sync.py", line 275, in _FetchHelper 
    no_tags=opt.no_tags, archive=self.manifest.IsArchive) 
    File "/home/sebastian/WORKING_DIR/.repo/repo/project.py", line 1110, in Sync_NetworkHalf 
    no_tags=no_tags)): 
    File "/home/sebastian/WORKING_DIR/.repo/repo/project.py", line 1845, in _RemoteFetch 
    self.bare_git.pack_refs('--all', '--prune') 
    File "/home/sebastian/WORKING_DIR/.repo/repo/project.py", line 2483, in runner 
    p.stderr)) 
error.GitError: platform/external/ipsec-tools pack-refs: fatal: Not a git repository: '/home/sebastian/WORKING_DIR/.repo/projects/external/ipsec-tools.git' 

Поскольку он говорит, что это не вместилище мерзавца, я просто пошел по наитию и выбежал git init на директории это указано, что не работает. Я также попытался удалить весь каталог ipsec-tools.git и повторить синхронизацию репо, чтобы он начинался с нуля, но он всегда дает ту же ошибку.

Любые идеи?

+0

Проверьте файловую систему и посмотреть, если вы находитесь вне дискового пространства. Repo по существу проверяет репозиторий git под '.repo/projects', тогда в вашем рабочем каталоге создается соответствующий путь к содержимому репозитория git и содержимое каталога .git' для этого проекта, обратившись через символическую ссылку в файлы конфигурации git в каталоге '.repo/projects'. Это похоже на то, что он не смог полностью снести все, что могло быть связано с проблемой дискового пространства. –

+0

Спасибо за ваш комментарий, Ларри. Я не был бы удивлен, если бы это была космическая проблема, для этого я запускаю виртуальную машину и на самом деле пришлось увеличить ее дисковое пространство, а затем расширить свой корневой раздел, что было большой проблемой. Однако, когда я вхожу в систему, он говорит, что я использую только около 40% от общего количества 60 ГБ, что означает, что у меня должно быть достаточно места для завершения загрузки. Кроме того, перед расширением я получил явные сообщения о том, что на диске недостаточно места, и теперь я просто получаю эти git-ошибки. Вы все еще думаете, что это может быть причиной? – schlow

+0

Хммм ... возможно, если вы сделали «repo init», за которым последовала «репо-синхронизация», и она потерпела неудачу из-за дискового пространства, а затем попыталась повторно запустить «репо-синхронизацию» после расширения диска. Он мог бы оставить git repos в странном состоянии. Возможно, вам захочется попытаться сдуть ваш рабочий каталог и начать снова. Или вы могли бы просто попробовать повторно запустить 'repo init' и' repo sync', но в прошлом у меня были очень смешанные результаты с этим подходом. –

ответ

3

Его не нужно начинать sync с нуля. Android - это огромный репозиторий для загрузки с нуля, и в интересах экономии времени и Интернета можно удалить конкретный репозиторий git (как правило, я видел только поврежденный каталог 1 git) и перезапустить синхронизацию.

repo сохраняет проекты в

.repo/projects 

, но это только мягкие ссылки на фактические данные GIT, которые хранятся в

.repo/project-objects 

следуют ссылки на «проекты» и удалить оба хранилищами и снова запустите синхронизацию. Это сработало для меня.

[Я хотел бы добавить это как комментарий, но это не позволяет мне - так добавил в ответ]

Смежные вопросы