Pengklonan repositori utama yang berjaya tidak menguji submodulnya. Submodul ialah repositori Git lain, mungkin pada hos lain dan menggunakan pengangkutan berbeza.

Mulakan dengan membaca URL yang diisytiharkan:

git -C project config --file .gitmodules --get-regexp '^submodule\..*\.url$'
git -C project submodule status --recursive

Repositori induk yang diambil melalui HTTPS boleh mengandungi submodul yang menggunakan git@host:. Tetapan proksi HTTP tidak mengkonfigurasi sambungan SSH itu. URL relatif submodul juga mesti diselesaikan berdasarkan remote yang sesuai bagi superprojek, bukan alamat web yang anda andaikan daripada nama projek.

Tetapan setempat repositori mempunyai skop

Entri http.proxy setempat milik repositori yang fail konfigurasinya mengandunginya. Jangan anggap pemeriksaan induk sahaja mendedahkan semua tetapan berkesan dalam repositori anak yang telah dimulakan.

Untuk menggantikan tetapan proksi HTTPS sementara sepanjang kemas kini rekursif, anda boleh memberikan konfigurasi baris perintah Git pada panggilan itu:

git -C project -c http.proxy=http://203.0.113.10:8080 \
  submodule update --init --recursive

Gantikan titik akhir contoh. Bagi submodul HTTPS awam pada laluan yang membenarkan proksi awam, senarai proksi HTTP menyediakan alamat calon. Ini tidak menukar URL SSH menjadi HTTPS; semak juga konfigurasi URL yang lebih khusus jika laluan terpilih mengejutkan.

Apabila URL yang didaftarkan berubah

Git mendaftarkan konfigurasi submodul secara setempat semasa pemulaan. Jika URL dalam projek berubah, bandingkan pengisytiharan semasa dengan nilai setempat sebelum menyimpulkan proksi rosak. Operasi sync yang didokumenkan mengemas kini URL daripada pengisytiharan projek; ia sendiri bukan tetapan proksi rangkaian.

Untuk kegagalan bersarang, catat laluan tepat submodul dan remote dalam ralat. Operasi rekursif boleh menghubungi beberapa hos; hos dalaman mungkin memerlukan pengecualian terus sedangkan hos awam menggunakan proksi.

Asingkan ralat pengangkutan daripada ralat repositori. Commit yang tiada, akses ditolak oleh repositori dan sambungan proksi yang gagal ialah sebab berbeza bagi hasil umum yang sama, ‘submodule update failed’.

Artikel berkaitan