Git official document显示了通过http与apache和git-http-backend
使用git服务器的方式
我希望通过http在我的程序中与git-http-backend
直接交互。
它就像apache代理所做的那样但是我需要从git客户端控制更多的东西,例如拒绝客户端pull
的用户名和存储库目录的路径他要求的。
如何直接使用git-http-backend
作为http服务?
答案 0 :(得分:1)
git-http-backend
在文档中描述为CGI程序。由于CGI程序本身并不能说HTTP,因此您必须使用CGI协议与之交谈(这是一个涉及环境变量和stdin和stdout的进程间通信协议)或者将其连接到HTTP服务器,例如作为Apache。
名称可能令人困惑,但这个" HTTP后端" 在HTTP服务器后面。
答案 1 :(得分:0)
您可以在docs/git-http-backend
阅读其文档,并在http-backend.c
(tested here)中查看其来源。
它是一个Common Gateway Interface (CGI),它由一个监听器调用,就像一个http服务器,还有任何其他监听器(!),如SSH。
请参阅Gitolite(授权层),它正是这样做的:因为它被称为git-xxx
(此处为:git-hhtp-backend
),您可以调用:git http-backend
:是its gitolite-shell does。
由于该后端依次调用git services(git-upload-pack,git-receive-pack,objects / info / packs,...),你可以直接执行git-http-backend所做的事情。这也是gitolite implements here。