同じリポジトリがターミナルでは git clone で動作し、JGit を使うアプリケーションでは失敗します。これは 2 つの実装の比較であり、同じクライアントの正常なコピーと壊れたコピーの比較とは限りません。

JGit の設定リファレンスによると、プロキシ設定は java.net.ProxySelector を通じた Java の標準機構を使います。両方のクライアントが Git 設定ファイルを理解するからといって、ネイティブ Git のすべての HTTP オプションが実装されていると決めつけないでください。

JGit を組み込んでいるアプリケーション、そのバージョン、選択された HTTP トランスポートを特定します。ホストアプリケーションは JGit 単体の既定値を超える設定や動作を提供することがあります。

次に、そのプロセスから見える Java プロキシ設定を確認します。URLConnection ベースの HTTP トランスポートでは、それが消費する JVM のホストとポートのプロパティを確認してください。アプリケーション起動後に無関係なターミナルで入力したプロパティは、実行中の JVM を再設定できません。IDE のネイティブ Git 操作とその JGit 操作も別の経路を使うことがあります。

プロキシ認証は経路選択とは切り離してください。ホストとポートを指定する Java プロキシプロパティは、プロキシのパスワード方式を自動的に実装しません。ホストアプリケーションが対応する認証機構を使ってください。

有用な問いは「この JGit リクエストはどのプロキシを選んだのか」であり、「自分の Git 設定にプロキシ行があるか」ではありません。ネイティブ Git の成功は貴重な比較ですが、実装固有のその問いには答えません。

関連記事