什么是git-remote-http prcess,为什么有这么多的git进程?

时间:2012-09-05 05:03:41

标签: git process

我在shell中找不到git-remote-http命令,为什么会有这样的进程?

我只打开了一个git svn进程,为什么有这么多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/ 

2 个答案:

答案 0 :(得分:1)

每个http请求都有一个单独的进程。 有许多客户端请求服务,因此有很多git进程。

答案 1 :(得分:1)

它被称为 remote helper

  当它需要与远程存储库进行交互时,git会调用它们.git本身不支持它们   给定的帮助程序将实现此处记录的功能的子集。

     

当git需要使用远程帮助程序与存储库进行交互时,它   将帮助程序作为一个独立的进程生成,将命令发送给帮助程序的标准输入,并期望来自帮助程序的标准输出的结果。

请注意,在Git 2.11(2016年第4季度)之前," git fetch http::/site/path" (这是一个无效的网址)会正确死亡,而是会发生段错误。

commit d63ed6eJeff King (peff)(2016年9月8日) (由Junio C Hamano -- gitster --合并于commit c13f458,2016年9月15日)

  

remote-curl:处理没有协议的网址

     

通常remote-curl永远不会看到没有" proto:"在开头,因为这是告诉git运行" git-remote-proto"帮助(以及 git-remote-http等是git-remote-curl 的别名。

     

然而,特殊语法" proto::something"将仅使用""运行git-remote-proto作为URL。
  所以格式错误的网址如:

http::/example.com/repo.git
  

将提供网址" /example.com/repo.git"至git-remote-http   生成的URL没有协议,但由372370f(http:使用凭证API处理代理身份验证,2016-01-26)添加的代码不处理此案例和段错误。

Git 2.13(2017年第二季度)通过确保"智能HTTP"远程 帮助者理解如何处理" --push-options"通过了 外部远程帮助程序接口。

commit 511155dcommit eb7b974Brandon Williams (mbrandonw)(2017年3月22日) Junio C Hamano -- gitster --于2017年3月27日commit 4e87565合并)

remote-http进程现在可以接收选项,因为git send-pack具有:

--push-option=<string>
  

将指定的字符串作为推送选项传递给服务器端的挂钩消费。如果服务器不支持推送选项,则会出错。

Git 2.14确实强制执行推送选项验证。

commit cbaf82c(2017年5月9日)和commit b7b744f(2017年5月8日)Jonathan Tan (jhowtan)Junio C Hamano -- gitster --于2017年5月23日commit 3c98008合并)

现在,receive-pack程序可以确保推送证书 记录用于推送的同一组推送选项。