Beheben und beheben Sie Synchronisierungsprobleme

Auf dieser Seite wird erläutert, wie Sie Probleme im Zusammenhang mit dem repo sync beheben und beheben.

Beheben Sie Netzwerkprobleme

Dieser Abschnitt enthält mehrere Vorschläge zur Behebung von Netzwerkproblemen, die zu fehlgeschlagenen Synchronisierungen führen können.

Verwenden Sie die Authentifizierung, um Kontingentbarrieren zu vermeiden

Um die Server vor übermäßiger Nutzung zu schützen, ist jeder IP-Adresse, die für den Zugriff auf die Quelle verwendet wird, ein Kontingent zugeordnet.

Wenn Sie eine IP-Adresse mit anderen Benutzern teilen, beispielsweise wenn Sie von außerhalb einer NAT-Firewall auf die Quellrepositorys zugreifen, können Kontingente normale Muster auslösen. Beispielsweise kann ein Kontingent ausgelöst werden, wenn mehrere Benutzer innerhalb eines kurzen Zeitraums neue Clients von derselben IP-Adresse synchronisieren.

Um das Auslösen von Kontingenten zu vermeiden, können Sie den authentifizierten Zugriff verwenden, der unabhängig von der IP-Adresse für jeden Benutzer ein separates Kontingent verwendet.

So aktivieren Sie den authentifizierten Zugriff:

  1. Erstellen Sie ein Passwort mit dem Passwortgenerator .

  2. Führen Sie den folgenden Befehl aus, um Ihren Client auf die Verwendung der automatischen Authentifizierung umzustellen (ohne den Zweig zu ändern):

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

    Beachten Sie, dass das Verzeichnispräfix /a/ eine automatische Authentifizierung auslöst.

Für Proxy-Verwendung konfigurieren

Wenn Sie die Quelle hinter einem Proxy herunterladen, wie es in einigen Unternehmensumgebungen üblich ist, stellen Sie sicher, dass Sie explizit einen Proxy angeben, den Repo verwenden soll, indem Sie die folgenden Befehle ausführen:

$ 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

Passen Sie die TCP/IP-Einstellungen an, um Verbindungsprobleme zu vermeiden

Obwohl dies selten vorkommt, kann es bei Linux-Clients zu Verbindungsproblemen kommen, z. B. dass sie beim Empfang von Objekten mitten im Download stecken bleiben. Um dieses Problem zu beheben, passen Sie die Einstellungen des TCP/IP-Stacks an oder verwenden Sie nicht parallele Verbindungen. Sie müssen über Root-Zugriff verfügen, um die TCP-Einstellung ändern zu können. Um die Einstellung zu ändern, geben Sie die folgenden Befehle ein:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1

Verwenden Sie einen lokalen Spiegel, um Netzwerklatenz zu vermeiden

Wenn Sie mehrere Clients verwenden, können Sie einen lokalen Spiegel des gesamten Serverinhalts erstellen und Clients von diesem Spiegel aus synchronisieren, ohne auf das Netzwerk zugreifen zu müssen. Befolgen Sie diese Anweisungen, um einen lokalen Spiegel unter ~/aosp-mirror/ zu erstellen und Clients mit diesem Spiegel zu synchronisieren:

  1. Erstellen und synchronisieren Sie den Spiegel:

    $ mkdir -p /usr/local/aosp/mirror
    $ cd /usr/local/aosp/mirror
    $ repo init -u https://android.googlesource.com/mirror/manifest --mirror
    

    Diese Befehle erstellen einen lokalen Spiegel in /user/local/aosp/mirror und initialisieren den Spiegel mithilfe des Flags --mirror mit dem Befehl repo init .

  2. So synchronisieren Sie Clients über den Spiegel:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Befolgen Sie abschließend diese Befehle, um den Spiegel mit dem Server und den Client mit dem Spiegel zu synchronisieren:

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

Es ist möglich, den Spiegel auf einem LAN-Server zu speichern und über NFS, SSH oder Git darauf zuzugreifen. Es ist auch möglich, es auf einem Wechseldatenträger zu speichern und dieses Laufwerk an Benutzer oder Computer weiterzugeben.

Verwenden Sie einen Teilklon

Wenn Sie Git Version 2.19 oder höher verwenden, geben Sie --partial-clone an, wenn Sie repo init durchführen, um etwaige Netzwerkprobleme mit geringer Latenz zu beheben:

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

Anstatt Repo zu initialisieren, um alles herunterzuladen, lädt dieser Befehl Git-Objekte nach Bedarf herunter.

Beheben Sie bestimmte Synchronisierungsprobleme

Auf dieser Seite werden einige bekannte Probleme beschrieben, die beim Versuch, den Android-Quellcode zu synchronisieren, auftreten können.

Befehle schlagen mit Fehler 403 oder 500 fehl (Proxy-Probleme)

Die Befehle repo init oder repo sync schlagen möglicherweise mit dem Fehler 403 oder 500 fehl. Meistens hängen diese Fehler damit zusammen, dass HTTP-Proxys Schwierigkeiten haben, große Datenübertragungen zu verarbeiten.

Obwohl es für diese Fehler keine spezifische Lösung gibt, kann die Verwendung der neuesten Python-Version und die explizite Verwendung von repo sync -j1 manchmal hilfreich sein.