2010-01-19 3 views
8

Я пытался получить исходники для релиза Android 1.6, но операция репо продолжает работать.Repo sync hangs

Я вставив последнюю часть сообщения я получаю на терминале здесь:

Fetching projects: 19% (32/164) 
Initializing project platform/external/freetype ... 
remote: Counting objects: 970, done. 
remote: Compressing objects: 100% (414/414), done. 
Receiving objects: 57% (558/970), 1.28 MiB | 26 KiB/s 

Это просто висит там ... никаких сообщений об ошибках или aything этого рода.

Неужели кто-нибудь сталкивался с подобной проблемой?

+1

Я испытываю это на своей машине Ubuntu 12 LTS x86. Кажется, он постоянно бомбит на одном объекте, когда 'git' порождает и максимизирует CPU. Я попытался отключить масштабирование окна TCP и ограничиться одним потоком, но не кубиками. –

ответ

0

Была аналогичная проблема back in September on SO.

Это может быть связанная с сетью скорость или связанная с точной версией Git, которую вы используете.
Если это msysgit, пожалуйста, обновите его до последней версии.
См. Также msysgit issue 361

11

Мне интересно, используете ли вы VMWare для запуска Linux. Я испытал ту же проблему, что и вы, пока не нашел то, что ее вызывало: размер окна tcp на нашей стороне был установлен в 0 (полный). Я запускаю Ubuntu 10.04 на VMWare на 64-разрядной версии Windows 7 как хост. Чтобы исправить это, просто убедитесь, что вы отдаете большое количество ОЗУ Ubuntu на VMWare, чтобы отменить любые проблемы с памятью. У меня был установлен до 512 МБ и увеличен до 1,5 М для лучшей производительности. Тогда самая важная настройка (и та, которая сделала трюк): убедитесь, что сетевой адаптер установлен на VMWare в режим моста. Например, при использовании NAT услуга NAT будет забивать и испортить размер окна для вас.

Причина: Размер окна TCP-клиента указывает серверу количество байтов, которое оно желает получать за один раз с сервера; это окно получения клиента. Когда для окна установлено значение 0, это означает, что клиент не сможет получать больше данных, пока он не обработает все данные, которые все еще ожидаются во внутренних буферах. Это обычный материал TCP. Размерный размер окна, установленного на 0 на клиенте, заключается в том, что TCP-соединение будет оставаться в живых в течение некоторого времени, пока сервер не решит, что он достаточно долго ждет и убьет соединение. Это то, что заставляло мою синхронизацию репо зависать без ошибок.

+1

Спасибо, что сработало для меня. Проблема была связана с мостовым подключением. – inazaruk

+0

Я использую VirtualBox, однако после переключения на мостовое соединение, я все еще сталкиваюсь с той же проблемой. – Joset

+0

Чтобы добавить еще несколько правдоподобностей в этот ответ, это теперь документировано андроидом: http://source.android.com/source/known-issues.html – gsingh2011

5

Надеюсь, это поможет кому-то сослаться на этот форум.

У меня была эта проблема с git-клонами больших репозиториев. Первоначально скорость будет высокой, а затем резко падает и, наконец, висит. Это была проблема с масштабированием окна TCP. Как только это было отключено, он работал нормально.

(Но самое странное, что когда я запустил его из Linux в VMWare, не было никакой проблемы.)

Чтобы отключить эту функцию для текущей сессии $ Sudo Sysctl -w net.ipv4.tcp_window_scaling = 0

+2

Чтобы добавить еще несколько правдоподобностей в этот ответ, это теперь документировано андроидом : source.android.com/source/known-issues.html – gsingh2011

+0

Это исправило это для меня, спасибо. Как-то, когда я посмотрел на страницу с известными проблемами, я не заметил этого.Странно, что у репо нет возможности восстановления после неудачной синхронизации. – BHS

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