Git بومی از طریق پروکسی کار میکند، اما JGit نه
JGit یک پیادهسازی جاوا با تنظیمات انتقال پشتیبانیشدهٔ خودش است. ورودی http.proxy در Git بومی یک پیکربندی جهانی برای همهٔ کلاینتهای Git نیست.
همان مخزن با git clone در ترمینال کار میکند و در برنامهای که از JGit استفاده میکند شکست میخورد. این مقایسهٔ دو پیادهسازی است، نه لزوماً مقایسهٔ یک نسخهٔ سالم و یک نسخهٔ خراب از یک کلاینت.
مرجع پیکربندی JGit میگوید پیکربندی پروکسی از سازوکارهای استاندارد جاوا از طریق java.net.ProxySelector استفاده میکند. صرفاً به این دلیل که هر دو کلاینت فایل پیکربندی Git را میفهمند، فرض نکنید که هر گزینهٔ HTTP در Git بومی پیادهسازی شده است.
برنامهای را که JGit را جاسازی میکند، نسخهاش و انتقال HTTP انتخابشده را شناسایی کنید. برنامهٔ میزبان میتواند تنظیمات یا رفتاری فراتر از پیشفرضهای مستقل JGit ارائه دهد.
سپس پیکربندی پروکسی جاوا را که برای آن فرایند قابل مشاهده است بررسی کنید. برای انتقال HTTP مبتنی بر URLConnection، ویژگیهای میزبان و پورت JVM را که مصرف میکند بررسی کنید. ویژگیای که پس از شروع برنامه در ترمینالی نامرتبط وارد شود نمیتواند JVM در حال اجرا را دوباره پیکربندی کند. عملیات Git بومی یک IDE و عملیات JGit آن نیز ممکن است مسیرهای متفاوتی داشته باشند.
احراز هویت پروکسی را از انتخاب مسیر جدا نگه دارید. ویژگیهای پروکسی جاوا که میزبان و پورت را مشخص میکنند بهطور خودکار طرح رمز عبور پروکسی را پیادهسازی نمیکنند. از سازوکار احراز هویت پشتیبانیشدهٔ برنامهٔ میزبان استفاده کنید.
پرسش سودمند این است: «این درخواست JGit کدام پروکسی را انتخاب کرد؟» نه «آیا پیکربندی Git من خط پروکسی دارد؟». موفقیت Git بومی مقایسهٔ ارزشمندی است، اما به آن پرسش ویژهٔ پیادهسازی پاسخ نمیدهد.