Memecahkan dan memperbaiki masalah sinkronisasi

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

Memperbaiki masalah jaringan

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

Menggunakan autentikasi untuk menghindari hambatan kuota

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

Saat membagikan alamat IP dengan pengguna lain, seperti saat mengakses repositori sumber dari luar firewall NAT, kuota dapat dipicu untuk pola normal. Misalnya, kuota dapat dipicu saat beberapa pengguna menyinkronkan klien baru dari alamat IP yang sama, dalam jangka waktu singkat.

Untuk menghindari pemicuan kuota, Anda dapat menggunakan akses yang diautentikasi, yang menggunakan kuota terpisah untuk setiap pengguna, terlepas dari alamat IP.

Untuk mengaktifkan akses yang diautentikasi:

  1. Buat sandi dengan pembuat 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 autentikasi otomatis.

Mengonfigurasi untuk penggunaan proxy

Jika Anda mendownload sumber dari balik proxy, seperti yang umum terjadi di beberapa lingkungan perusahaan, pastikan Anda secara eksplisit menentukan proxy yang akan 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

Menyesuaikan setelan TCP/IP untuk menghindari masalah konektivitas

Meskipun jarang terjadi, klien Linux dapat mengalami masalah konektivitas, seperti terjebak di tengah proses download saat menerima objek. Untuk memperbaiki masalah ini, sesuaikan setelan stack TCP/IP atau gunakan koneksi nonparalel. Anda harus memiliki akses root untuk mengubah setelan TCP. Untuk mengubah setelan, jalankan perintah berikut:

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

Gunakan mirror 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 menyinkronkan 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. Sinkronkan klien dari cermin:

    $ 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
    
  3. Sinkronkan mirror dengan server dan sinkronkan klien dengan mirror:

    $ cd /usr/local/aosp/mirror</code>
    $ repo sync
    $ cd /usr/local/aosp/android-latest-release
    $ repo sync
    

Anda dapat menyimpan mirror di server LAN dan mengaksesnya melalui NFS, SSH, atau Git. Anda juga dapat menyimpannya di drive yang dapat dilepas dan meneruskan drive tersebut ke pengguna atau perangkat lain.

Menggunakan clone parsial

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

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

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

Memecahkan masalah error 403 atau 500 (masalah proxy)

Perintah repo init atau repo sync mungkin gagal dengan error 403 atau 500. Sering kali error ini terkait dengan proxy HTTP yang kesulitan menangani transfer data berukuran besar.

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