小さな Git 操作は成功するのに、別の操作は HTTP 417 を返す。このステータスは「プロキシのパスワードが拒否された」という略語ではない。

HTTP は 417 を期待の失敗と定義している。Expect フィールドを含むリクエストは、その期待を満たせないサーバーや仲介者に遭遇することがある。100-continue のやり取りは、アップロード本文が送信される前の判断を説明する。

どのコンポーネントが応答を発行したのか、リクエストに何が含まれていたのかを突き止める。丁寧に編集した Git の HTTP トレースとプロキシ側の対応するログ項目は、commit のサイズから推測するより有用である。

内部リポジトリが直接経路を使うべきなら、そのルーティングポリシーを意図的に修正する。プロキシを使わなければならないなら、その経路の互換性を調べる。すべてのプロキシ設定を削除すると、失敗を説明しないまま別の経路を選んで症状を隠すことがある。

同様に、http.postBuffer はプロキシのエラーに対する万能薬ではない。変更する前に Git の設定リファレンスでオプションを理解する。数値の HTTP ステータス、リクエストの段階、それを返すコンポーネントが次の一手を導くべきである。

関連記事