テクノロジー · 実用ガイド
Git の「RPC failed; curl 92」—バッファ変更前に HTTP/2 の境界を証明する
curl 92 は HTTP/2 ストリーム失敗を示すだけで、Git のバッファ不足を証明しません。不完全転送の手掛かりを残し、プロトコルか経路を一変数ずつ比較し、回避策を残す前にオブジェクトを検証します。

curl 92 は HTTP/2 ストリーム失敗を示すだけで、Git のバッファ不足を証明しません。不完全転送の手掛かりを残し、プロトコルか経路を一変数ずつ比較し、回避策を残す前にオブジェクトを検証します。
libcurl 92 は HTTP/2 フレーミング層のストリームエラーで、Git、ネットワーク、プロキシ、サーバーのどれが原因かは示しません。 clone、fetch、pull、push のどの操作かを記録します。受信と送信の経路は同じではありません。 git -c http.version=HTTP/1.1 で一回だけ比較し、証拠なしにグローバル設定を書きません。
操作・リポジトリ・不完全転送を固定する
ストリーム番号、リセット名、残りバイト、early EOF、index-pack を含む完全なエラー列を保存し、Git版、コマンド、ホスト、時刻を記録します。共有前に秘密を削除します。
新しい一時ディレクトリだけで再試行し、不完全な作業ツリーを利用可能とみなしません。正常な既存 clone も消しません。
リポジトリと操作の範囲を分ける
同じリモートと操作を清潔な場所で再現し、同じホストの別リポジトリも比較します。許可があれば別の既知正常ホストも使います。
clone/fetch は pack を受信し、push は要求を送信します。push向け postBuffer を clone に流用せず、depth/filter は限定診断とします。
可逆な HTTP バージョン比較を一度行う
リポジトリ、コマンド、資格情報、経路を固定し、基準実行の後に git -c http.version=HTTP/1.1 を一度だけ使います。
成功しても HTTP/2 依存のクライアント、中継、リモートへ候補が狭まるだけです。両方失敗ならプロトコル変更を止めます。
ネットワークと中継境界を一つずつ比較する
同じコマンドで許可された別経路を一つだけ比較し、DNS、プロキシ/VPN、時刻と結果を記録します。
プロトコル、ネットワーク、Git版、深さ、バッファを同時に変えません。必要なトレースは秘匿化します。
バッファの盲目的変更を拒み結果を検証する
git config --show-origin --get-all http.postBuffer で現状を確認します。この設定は clone 応答の欠損バイトを復元しません。
エラーなく完了し、refs が存在し、用途に合う検証を通った時だけ完了です。仮の上書きを削除し結果表を引き渡します。
