Định tuyến proxy cho Git submodule
Kiểm tra URL submodule, kiểu truyền tải và cấu hình kho lưu trữ khi checkout Git chính đi qua proxy nhưng các kho con không hoạt động.
Clone thành công kho chính không kiểm tra các submodule. Một submodule là một kho Git khác, có thể ở máy chủ khác và có thể dùng kiểu truyền tải khác.
Bắt đầu bằng cách đọc các URL đã khai báo:
git -C project config --file .gitmodules --get-regexp '^submodule\..*\.url$'
git -C project submodule status --recursive
Kho cha tải qua HTTPS có thể chứa submodule dùng git@host:. Cấu hình proxy HTTP không cấu hình kết nối SSH đó. URL tương đối của submodule cũng phải được phân giải theo remote thích hợp của superproject, không theo địa chỉ web bạn tự suy ra từ tên dự án.
Cấu hình cục bộ của kho có phạm vi riêng
Mục http.proxy cục bộ thuộc về kho có tệp cấu hình chứa mục đó. Đừng cho rằng chỉ kiểm tra kho cha sẽ cho biết mọi cấu hình hiệu lực bên trong kho con đã khởi tạo.
Để tạm thời ghi đè proxy HTTPS trong một lần cập nhật đệ quy, có thể truyền cấu hình dòng lệnh của Git cho lần gọi đó:
git -C project -c http.proxy=http://203.0.113.10:8080 \
submodule update --init --recursive
Hãy thay endpoint minh họa. Với các submodule HTTPS công khai trên tuyến cho phép proxy công khai, danh sách proxy HTTP cung cấp các địa chỉ ứng viên. Điều này không đổi URL SSH của submodule thành HTTPS; khi tuyến được chọn gây bất ngờ, hãy kiểm tra cả cấu hình cụ thể theo URL.
Khi URL đã đăng ký thay đổi
Git đăng ký cấu hình submodule cục bộ trong lúc khởi tạo. Nếu URL submodule trong dự án thay đổi, hãy so sánh khai báo hiện tại với giá trị đã đăng ký cục bộ trước khi kết luận proxy hỏng. Thao tác đồng bộ được tài liệu hóa cập nhật URL đã đăng ký từ khai báo dự án; bản thân nó không phải thiết lập proxy mạng.
Khi lỗi lồng nhau xảy ra, ghi lại đường dẫn submodule chính xác và remote được nêu trong lỗi. Thao tác đệ quy có thể liên hệ nhiều máy chủ; máy chủ nội bộ có thể cần ngoại lệ kết nối trực tiếp trong khi máy chủ công khai dùng proxy.
Tách lỗi truyền tải khỏi lỗi kho. Commit không khả dụng, kho từ chối truy cập và kết nối tới proxy thất bại là các nguyên nhân khác nhau của cùng kết quả cấp cao “cập nhật submodule thất bại”.