Git gốc hoạt động qua proxy, nhưng JGit thì không
JGit là một triển khai Java với các thiết lập truyền tải được hỗ trợ riêng. Mục http.proxy trong Git gốc không phải là cấu hình phổ quát cho mọi ứng dụng khách Git.
Cùng một kho lưu trữ hoạt động với git clone trong terminal và thất bại trong ứng dụng dùng JGit. Đó là so sánh giữa hai triển khai, không nhất thiết giữa bản sao hoạt động và bản sao hỏng của cùng một ứng dụng khách.
Tài liệu cấu hình của JGit nói rằng cấu hình proxy dùng các cơ chế chuẩn của Java thông qua java.net.ProxySelector. Đừng cho rằng mọi tùy chọn HTTP của Git gốc đều được triển khai chỉ vì cả hai ứng dụng khách đều hiểu tệp cấu hình Git.
Xác định ứng dụng nhúng JGit, phiên bản của nó và phương thức truyền tải HTTP được chọn. Ứng dụng máy chủ có thể cung cấp thiết lập hoặc hành vi vượt ra ngoài giá trị mặc định độc lập của JGit.
Sau đó kiểm tra cấu hình proxy Java mà tiến trình đó nhìn thấy. Với phương thức truyền tải HTTP dựa trên URLConnection, hãy kiểm tra thuộc tính máy chủ và cổng của JVM mà nó dùng. Một thuộc tính được nhập vào terminal không liên quan sau khi ứng dụng khởi động không thể cấu hình lại JVM đang chạy. Thao tác Git gốc của IDE và thao tác JGit của nó cũng có thể dùng các đường dẫn khác nhau.
Giữ xác thực proxy tách biệt khỏi việc chọn tuyến. Các thuộc tính proxy Java chỉ định máy chủ và cổng không tự động triển khai sơ đồ mật khẩu proxy. Hãy dùng cơ chế xác thực được ứng dụng máy chủ hỗ trợ.
Câu hỏi hữu ích là “yêu cầu JGit này đã chọn proxy nào?”, chứ không phải “cấu hình Git của tôi có dòng proxy không?”. Thành công với Git gốc là một so sánh có giá trị, nhưng nó không trả lời câu hỏi đặc thù cho triển khai đó.