リモートヘルパーと呼ばれる
これらは、git がネイティブにサポートしていないリモート リポジトリとやり取りする必要があるときに、git によって呼び出されます。
特定のヘルパーは、ここに記載されている機能のサブセットを実装します。
git がリモート ヘルパーを使用してリポジトリと対話する必要がある場合、git はヘルパーを独立したプロセスとして生成し、コマンドをヘルパーの標準入力に送信し、ヘルパーの標準出力からの結果を期待します。
Git 2.11 (2016 年第 4 四半期) までは、" git fetch http::/site/path
" (無効な URL) は正しく終了せず、代わりに segfault になることに注意してください。
Jeff King ( )によるcommit d63ed6e (2016 年 9 月 8 日)を参照してください。( 2016 年 9 月 15 日、コミット c13f458でJunio C Hamanoによってマージされました)peff
gitster
remote-curl
: プロトコルなしで URL を処理する
通常、先頭にremote-curl
" " がない URL は表示されません。これは、" " ヘルパーproto:
を実行するように git に指示するためです(およびなどは のエイリアスです)。git-remote-proto
git-remote-http
git-remote-curl
ただし、特殊な構文 " " は、URL として "something" のみを使用してproto::something
実行されます。
したがって、次のような不正な URL です。git-remote-proto
http::/example.com/repo.git
/example.com/repo.git
は URL " " をにフィードしますgit-remote-http
。
結果の URL にはプロトコルがありませんが、372370f (http: 資格情報 API を使用してプロキシ認証を処理する、2016-01-26) によって追加されたコードは、このケースとセグメンテーション違反を処理しません。
Git 2.13 (2017 年第 2 四半期) では、「スマート HTTP」リモート ヘルパー--push-options
が外部リモート ヘルパー インターフェイスを介して渡された「
commit 511155d、commit eb7b974 (2017 年 3 月 22 日) by Brandon Williams ( mbrandonw
)を参照してください。
( 2017 年 3 月 27 日にコミット 4e87565でJunio C Hamanoによってマージされました)gitster
git send-packには以下があるため、remote-http プロセスはオプションを受け取ることができるようになりました。
--push-option=<string>
サーバー側のフックで使用するプッシュ オプションとして、指定された文字列を渡します。サーバーがプッシュ オプションをサポートしていない場合は、エラーになります。
Git 2.14 では、プッシュ オプションの検証が強制されます。
commit cbaf82c (2017 年 5 月 9 日) およびcommit b7b744f (2017 年 5 月 8 日) by Jonathan Tan ( jhowtan
)を参照してください。
( 2017 年 5 月 23 日、コミット 3c98008でJunio C Hamanoによってマージされました)gitster
receive-pack プログラムは、プッシュに使用されたのと同じプッシュ オプションのセットがプッシュ証明書に記録されるようになりました。