Memecahkan masalah dan memperbaiki masalah sinkronisasi

Halaman ini menjelaskan cara memecahkan masalah dan memperbaiki masalah yang terkait dengan perintah repo sync .

Perbaiki masalah jaringan

Bagian ini memberikan beberapa saran untuk memperbaiki masalah jaringan yang dapat menyebabkan sinkronisasi gagal.

Gunakan otentikasi untuk menghindari hambatan kuota

Untuk melindungi server dari penggunaan berlebihan, setiap alamat IP yang digunakan untuk mengakses sumber dikaitkan dengan kuota.

Saat berbagi alamat IP dengan pengguna lain, misalnya saat mengakses repositori sumber dari luar firewall NAT, kuota dapat memicu pola normal. Misalnya, kuota dapat terpicu ketika beberapa pengguna menyinkronkan klien baru dari alamat IP yang sama, dalam waktu singkat.

Untuk menghindari pemicuan kuota, Anda dapat menggunakan akses terotentikasi, yang menggunakan kuota terpisah untuk setiap pengguna, apa pun alamat IP-nya.

Untuk mengaktifkan akses terotentikasi:

  1. Buat kata sandi dengan pembuat kata sandi .

  2. Jalankan perintah berikut untuk mengonversi klien Anda agar menggunakan autentikasi otomatis (tanpa mengubah cabang):

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

    Perhatikan bahwa awalan direktori /a/ memicu otentikasi otomatis.

Konfigurasikan untuk penggunaan proxy

Jika Anda mengunduh sumber dari belakang proksi, seperti yang biasa terjadi di beberapa lingkungan perusahaan, pastikan Anda secara eksplisit menentukan proksi untuk digunakan Repo dengan menjalankan perintah berikut:

$ 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

Sesuaikan pengaturan TCP/IP untuk menghindari masalah konektivitas

Meskipun jarang terjadi, klien Linux dapat mengalami masalah konektivitas, seperti terjebak di tengah pengunduhan saat menerima objek. Untuk mengatasi masalah ini, sesuaikan pengaturan tumpukan TCP/IP atau gunakan koneksi non-paralel. Anda harus memiliki akses root untuk mengubah pengaturan TCP. Untuk mengubah pengaturan, jalankan perintah berikut:

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

Gunakan cermin lokal untuk menghindari latensi jaringan

Saat menggunakan beberapa klien, Anda dapat membuat mirror lokal dari seluruh konten server dan menyinkronkan klien dari mirror tersebut tanpa mengakses jaringan. Ikuti petunjuk berikut untuk membuat mirror lokal di ~/aosp-mirror/ dan sinkronkan klien dengan mirror tersebut:

  1. Buat dan sinkronkan cermin:

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

    Perintah ini membuat mirror lokal di /user/local/aosp/mirror dan menginisialisasi mirror menggunakan flag --mirror dengan perintah repo init .

  2. Untuk menyinkronkan klien dari mirror:

    $ mkdir -p /usr/local/aosp/main
    $ cd /usr/local/aosp/main
    $ repo init -u /usr/local/aosp/mirror/platform/manifest.git
    $ repo sync
    
  3. Terakhir, ikuti perintah berikut untuk menyinkronkan mirror dengan server dan menyinkronkan klien dengan mirror:

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

Mirror dapat disimpan di server LAN dan diakses melalui NFS, SSH, atau Git. Dimungkinkan juga untuk menyimpannya di drive yang dapat dilepas dan meneruskan drive tersebut ke pengguna atau mesin.

Gunakan klon sebagian

Jika Anda menggunakan Git versi 2.19 atau lebih baru, tentukan --partial-clone saat menjalankan repo init untuk mengatasi masalah jaringan latensi rendah:

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

Daripada menginisialisasi Repo untuk mengunduh semuanya, perintah ini mengunduh objek Git sesuai kebutuhan.

Perbaiki masalah sinkronisasi tertentu

Halaman ini merinci beberapa masalah umum yang mungkin Anda alami saat mencoba menyinkronkan kode sumber Android.

Perintah gagal dengan kesalahan 403 atau 500 (masalah proxy)

Perintah repo init atau repo sync mungkin gagal dengan kesalahan 403 atau 500. Seringkali kesalahan ini terkait dengan proxy HTTP yang kesulitan menangani transfer data dalam jumlah besar.

Meskipun tidak ada perbaikan khusus untuk kesalahan ini, menggunakan versi Python terbaru dan secara eksplisit menggunakan repo sync -j1 terkadang dapat membantu.