Memecahkan dan memperbaiki masalah sinkronisasi

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

Memperbaiki masalah jaringan

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

Menggunakan autentikasi untuk menghindari kendala kuota

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

Saat berbagi alamat IP dengan pengguna lain, seperti saat mengakses sumber repositori di luar {i>firewall<i} NAT, kuota dapat terpicu untuk pola-pola tersebut. Misalnya, kuota dapat dipicu saat beberapa pengguna menyinkronkan klien baru dari alamat IP yang sama, dalam 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 generator sandi.

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

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

    Perlu diperhatikan bahwa awalan direktori /a/ memicu autentikasi otomatis.

Mengonfigurasi untuk penggunaan proxy

Jika Anda mendownload sumber dari belakang proxy, seperti yang umum terjadi di beberapa lingkungan perusahaan, pastikan Anda secara eksplisit menetapkan proxy untuk Repo yang akan digunakan 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 macet di tengah proses download saat menerima objek. Untuk meningkatkan masalah ini, sesuaikan pengaturan tumpukan TCP/IP atau gunakan koneksi jarak jauh. Anda harus memiliki akses root untuk mengubah setelan TCP. Untuk mengubah setelan, berikan perintah berikut:

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

Menggunakan duplikasi lokal untuk menghindari latensi jaringan

Saat menggunakan beberapa klien, Anda dapat membuat duplikat lokal dari seluruh server konten dan menyinkronkan klien dari cermin itu tanpa mengakses jaringan. Ikuti petunjuk ini untuk membuat pencerminan lokal di ~/aosp-mirror/ dan sinkronkan klien terhadap duplikat tersebut:

  1. Buat dan sinkronkan duplikat:

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

    Perintah ini membuat duplikasi lokal di /user/local/aosp/mirror dan lakukan inisialisasi cermin menggunakan flag --mirror dengan repo init perintah.

  2. Untuk menyinkronkan klien dari duplikasi:

    $ 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 duplikasi terhadap server dan menyinkronkan klien terhadap duplikasi:

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

Hal ini dimungkinkan untuk menyimpan cermin pada server LAN dan mengaksesnya melalui NFS, SSH, atau Git. Dimungkinkan juga untuk menyimpannya di {i>drive<i} yang dapat dilepas dan untuk yang berjalan di antara pengguna atau komputer.

Menggunakan clone parsial

Jika Anda menggunakan Git versi 2.19 atau yang 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

Perintah ini akan mendownload Git alih-alih menginisialisasi Repo untuk mendownload semuanya objek sesuai kebutuhan.

Memperbaiki masalah sinkronisasi tertentu

Halaman ini menjelaskan 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 error 403 atau 500 {i>error<i}. Sering kali kesalahan ini terkait dengan {i>proxy<i} HTTP yang kesulitan untuk menangani transfer data yang besar.

Meskipun tidak ada perbaikan khusus untuk error ini, gunakan perintah dan secara eksplisit menggunakan repo sync -j1 terkadang bisa membantu.