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 tidak berhasil.
Menggunakan autentikasi untuk menghindari hambatan kuota
Untuk melindungi server dari penggunaan yang berlebihan, setiap alamat IP yang digunakan untuk mengakses sumber dikaitkan dengan kuota.
Saat berbagi 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-nya.
Untuk mengaktifkan akses yang diautentikasi:
Buat sandi dengan generator sandi.
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 biasa dilakukan di beberapa lingkungan perusahaan, pastikan Anda menentukan proxy secara eksplisit untuk digunakan Repo dengan menjalankan perintah ini:
$ 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 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 mirror lokal dari seluruh konten
server dan menyinkronkan klien dari mirror tersebut tanpa mengakses
jaringan. Ikuti petunjuk ini untuk membuat pencerminan lokal di
~/aosp-mirror/
dan sinkronkan klien terhadap duplikat tersebut:
Buat dan sinkronkan mirror:
$ 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
denganrepo init
perintah.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
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
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. 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, menggunakan versi Python terbaru dan menggunakan repo sync -j1
secara eksplisit terkadang dapat membantu.