Git ดั้งเดิมทำงานผ่านพร็อกซี แต่ JGit ไม่ทำงาน
JGit เป็นการใช้งาน Java ที่มีการตั้งค่าการขนส่งที่รองรับของตัวเอง รายการ http.proxy ใน Git ดั้งเดิมไม่ใช่การกำหนดค่าสากลสำหรับไคลเอนต์ Git ทุกตัว
ที่เก็บเดียวกันทำงานกับ git clone ในเทอร์มินัล แต่ล้มเหลวในแอปพลิเคชันที่ใช้ JGit นั่นคือการเปรียบเทียบระหว่างสองการใช้งาน ไม่ใช่การเปรียบเทียบระหว่างสำเนาที่ทำงานได้กับสำเนาที่เสียของไคลเอนต์เดียวกันเสมอไป
เอกสารอ้างอิงการกำหนดค่าของ JGit กล่าวว่าการกำหนดค่าพร็อกซีใช้กลไกมาตรฐานของ Java ผ่าน java.net.ProxySelector อย่าสันนิษฐานว่าตัวเลือก HTTP ทุกตัวของ Git ดั้งเดิมถูกนำมาใช้เพียงเพราะไคลเอนต์ทั้งสองเข้าใจไฟล์กำหนดค่า Git
ระบุแอปพลิเคชันที่ฝัง JGit เวอร์ชัน และการขนส่ง HTTP ที่เลือก แอปพลิเคชันโฮสต์อาจมีsettingsหรือพฤติกรรมเกินกว่าค่าเริ่มต้นอิสระของ JGit
จากนั้นตรวจสอบการกำหนดค่าพร็อกซี Java ที่มองเห็นได้จากโพรเซสนั้น สำหรับการขนส่ง HTTP ที่ใช้ URLConnection ให้ตรวจสอบพร็อพเพอร์ตี้โฮสต์และพอร์ตของ JVMที่มันใช้ พร็อพเพอร์ตี้ที่ป้อนในเทอร์มินัลที่ไม่เกี่ยวข้องหลังแอปพลิเคชันเริ่มทำงานไม่สามารถกำหนดค่า JVM ที่กำลังทำงานใหม่ได้ การดำเนินการ Git ดั้งเดิมของ IDE และการดำเนินการ JGit ของ IDE นั้นก็อาจใช้เส้นทางที่แตกต่างกัน
แยกการพิสูจน์ตัวตนของพร็อกซีออกจากการเลือกเส้นทาง พร็อพเพอร์ตี้พร็อกซี Java ที่ระบุโฮสต์และพอร์ตไม่ได้ใช้รูปแบบรหัสผ่านพร็อกซีโดยอัตโนมัติ ใช้กลไกการพิสูจน์ตัวตนที่แอปพลิเคชันโฮสต์รองรับ
คำถามที่มีประโยชน์คือ “คำขอ JGit นี้เลือกพร็อกซีใด” ไม่ใช่ “การกำหนดค่า Git ของฉันมีบรรทัดพร็อกซีหรือไม่” ความสำเร็จของ Git ดั้งเดิมเป็นการเปรียบเทียบที่มีคุณค่า แต่ไม่ได้ตอบคำถามเฉพาะการใช้งานนั้น