На этой странице объясняется, как устранять неполадки и исправлять проблемы, связанные с командой repo sync .
Устранение проблем с сетью
В этом разделе приведены несколько рекомендаций по устранению сетевых проблем, которые могут привести к неудачной синхронизации.
Используйте аутентификацию, чтобы избежать ограничений по квотам.
Для защиты серверов от чрезмерной нагрузки каждому IP-адресу, используемому для доступа к источнику, присваивается квота.
При совместном использовании IP-адреса с другими пользователями, например, при доступе к репозиториям исходного кода из-за NAT-брандмауэра, квоты могут срабатывать при обычных сценариях. Например, квота может сработать, когда несколько пользователей синхронизируют новые клиенты с одного и того же IP-адреса в течение короткого промежутка времени.
Чтобы избежать превышения лимитов трафика, можно использовать аутентифицированный доступ, при котором для каждого пользователя устанавливается отдельная квота, независимо от IP-адреса.
Для обеспечения аутентифицированного доступа:
Создайте пароль с помощью генератора паролей .
Выполните следующую команду, чтобы перевести ваш клиент на использование автоматической аутентификации (без смены ветки):
$ repo init -u https://android.googlesource.com/a/platform/manifestОбратите внимание, что префикс каталога
/a/запускает автоматическую аутентификацию.
Настройка для использования прокси-сервера
Если вы загружаете исходный код через прокси-сервер, что часто встречается в некоторых корпоративных средах, убедитесь, что вы явно указали прокси-сервер для использования Repo, выполнив следующие команды:
$ export HTTP_PROXY=http://proxy_user_id:proxy_password@proxy_server:proxy_port
$ export HTTPS_PROXY=http://proxy_user_id:proxy_password@proxy_server:proxy_port
Настройте параметры TCP/IP, чтобы избежать проблем с подключением.
Хотя это и редкость, у клиентов Linux могут возникать проблемы с подключением, например, зависание во время загрузки при получении объектов. Для решения этой проблемы можно изменить настройки стека TCP/IP или использовать непараллельные соединения. Для изменения настроек TCP необходимы права root. Чтобы изменить настройки, выполните следующие команды:
$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
Используйте локальное зеркало, чтобы избежать задержек в сети.
При использовании нескольких клиентов можно создать локальное зеркало всего содержимого сервера и синхронизировать клиентов с этого зеркала без доступа к сети. Следуйте этим инструкциям, чтобы создать локальное зеркало в папке ~/aosp-mirror/ и синхронизировать клиентов с этим зеркалом:
Создайте и синхронизируйте зеркало:
$ mkdir -p /usr/local/aosp/mirror $ cd /usr/local/aosp/mirror $ repo init -u https://android.googlesource.com/mirror/manifest --mirrorЭти команды создают локальное зеркало в
/user/local/aosp/mirrorи инициализируют его с помощью флага--mirror, используя командуrepo init.Синхронизируйте клиенты с зеркала:
$ mkdir -p /usr/local/aosp/main $ cd /usr/local/aosp/main $ repo init -u /usr/local/aosp/mirror/platform/manifest.git -b android-latest-release $ repo syncСинхронизируйте зеркало с сервером и синхронизируйте клиенты с зеркалом:
$ cd /usr/local/aosp/mirror $ repo sync $ cd /usr/local/aosp/android-latest-release $ repo sync
Зеркало можно хранить на сервере в локальной сети и получать к нему доступ через NFS, SSH или Git. Также его можно хранить на съемном диске и передавать этот диск между пользователями или компьютерами.
Используйте частичное клонирование.
Если вы используете Git версии 2.19 или более поздней, укажите параметр --partial-clone при инициализации repo init , чтобы избежать проблем с низкой задержкой в сети:
$ repo init -u https://android.googlesource.com/platform/manifest -b android-latest-release --partial-clone --clone-filter=blob:limit=10M
Вместо инициализации репозитория для загрузки всего содержимого, эта команда загружает объекты Git по мере необходимости.
Устранение ошибок 403 или 500 (проблемы с прокси-сервером)
Команды repo init или repo sync могут завершиться ошибкой 403 или 500. Чаще всего эти ошибки связаны с тем, что HTTP-прокси не справляются с обработкой больших объемов данных.
Хотя конкретного решения этих ошибок не существует, иногда помогает использование самой последней версии Python и явное указание команды repo sync -j1 .