4

シェルで git-remote-http コマンドが見つかりません。なぜそのようなプロセスがあるのですか?

git svn プロセスを 1 つだけ開いたのですが、git 関連のプロセスがたくさんあるのはなぜですか?

[mirror@home git]$ pgrep git
12035
12036
22308
22309
22394
22397
24128
24129
26136
26137
[mirror@home git]$ pgrep git -lf
12035 git fetch origin
12036 git-remote-http origin http://git.savannah.gnu.org/r/weechat.git/
22308 git svn clone http://code.taobao.org/svn/obconnector/
22309 /usr/bin/perl /home/mirror/ins_git/libexec/git-core/git-svn clone http://xxx.org/svn/xxx/
22394 git update-index -z --index-info
22397 git hash-object -w --stdin-paths --no-filters
24128 git fetch origin
24129 git-remote-http origin http://git.xxx.org/xxx.git/
26136 git fetch origin
26137 git-remote-http origin http://git.xxx.org/xxx.git/ 
4

2 に答える 2

2

リモートヘルパーと呼ばれる

これらは、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 日コミット c13f458Junio C Hamanoによってマージされました)peff
gitster

remote-curl: プロトコルなしで URL を処理する

通常、先頭にremote-curl" " がない URL は表示されません。これは、" " ヘルパーproto:を実行するように git に指示するためです(およびなどは のエイリアスです)。git-remote-protogit-remote-httpgit-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 511155dcommit eb7b974 (2017 年 3 月 22 日) by Brandon Williams ( mbrandonw)を参照してください。
( 2017 年 3 月 27 日にコミット 4e87565Junio 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 日、コミット 3c98008Junio C Hamanoによってマージされました)gitster

receive-pack プログラムは、プッシュに使用されたのと同じプッシュ オプションのセットがプッシュ証明書に記録されるようになりました。

于 2016-09-16T12:12:50.560 に答える
1

http 要求ごとに 1 つの個別のプロセス。多くのクライアントがサービスを要求しているため、多くの git プロセスがあります。

于 2012-09-05T06:20:38.220 に答える