Устранение и устранение проблем с синхронизацией

На этой странице объясняется, как устранять и устранять проблемы, связанные с командой repo sync .

Устранение проблем с сетью

В этом разделе представлено несколько советов по устранению проблем с сетью, которые могут привести к неудачной синхронизации.

Используйте аутентификацию, чтобы избежать квотных барьеров

Чтобы защитить серверы от чрезмерного использования, каждому IP-адресу, используемому для доступа к источнику, присваивается квота.

При совместном использовании IP-адреса с другими пользователями, например при доступе к исходным репозиториям из-за брандмауэра NAT, квоты могут срабатывать по обычным шаблонам. Например, квота может сработать, когда несколько пользователей синхронизируют новых клиентов с одного и того же IP-адреса в течение короткого периода времени.

Чтобы избежать срабатывания квот, вы можете использовать доступ с проверкой подлинности, при котором для каждого пользователя используется отдельная квота, независимо от IP-адреса.

Чтобы включить аутентифицированный доступ:

  1. Создайте пароль с помощью генератора паролей .

  2. Запустите следующую команду, чтобы преобразовать ваш клиент для использования автоматической аутентификации (без изменения ветки):

    $ 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/ и синхронизировать клиенты с этим зеркалом:

  1. Создайте и синхронизируйте зеркало:

    $ 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 .

  2. Чтобы синхронизировать клиентов с зеркала:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Наконец, выполните следующие команды, чтобы синхронизировать зеркало с сервером и синхронизировать клиент с зеркалом:

    $ cd /usr/local/aosp/mirror</code>
    $ repo sync
    $ cd /usr/local/aosp/main
    $ repo sync
    

Зеркало можно хранить на сервере локальной сети и получать к нему доступ через NFS, SSH или Git. Также возможно хранить его на съемном диске и передавать этот диск пользователям или машинам.

Использовать частичный клон

Если вы используете Git версии 2.19 или новее, укажите --partial-clone при выполнении repo init , чтобы избежать проблем с сетью с низкой задержкой:

  $ repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M

Вместо инициализации Repo для загрузки всего, эта команда загружает объекты Git по мере необходимости.

Устранение определенных проблем с синхронизацией

На этой странице подробно описаны некоторые известные проблемы, с которыми вы можете столкнуться при попытке синхронизации исходного кода Android.

Команды завершаются с ошибкой 403 или 500 (проблемы с прокси-сервером)

Команды repo init или repo sync могут завершиться неудачно с ошибкой 403 или 500. Чаще всего эти ошибки связаны с тем, что HTTP-прокси не могут справиться с передачей больших объемов данных.

Хотя конкретного исправления этих ошибок не существует, иногда может помочь использование самой последней версии Python и явное использование repo sync -j1 .