我正在build立一个git–http-backend和Smart HTTP的git服务器,但是Apache似乎没有调用Smart HTTP CGI:
$ curl http://localhost/repo/myproject.git/info/refs?service=git-receive-pack 2ddf56592a0f55456b8c42dc9f2cb9289f083f53 refs/heads/1.0.x 55079bb13d9af8a9164ad0d24b654cbfe119bc7e refs/heads/master
这是我的configuration:
<VirtualHost *:8000> ServerName localhost DocumentRoot /opt/local/apache2/htdocs/repo SetEnv GIT_PROJECT_ROOT /opt/local/apache2/htdocs/repo SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /repo/ /usr/libexec/git-core/git-http-backend/ AliasMatch ^/repo/(.*/objects/[0-9a-f]{2}/[0-9a-f]{38})$ /opt/local/apache2/htdocs/repo/$1 AliasMatch ^/repo/(.*/objects/pack/pack-[0-9a-f]{40}.(pack|idx))$ /opt/local/apache2/htdocs/repo/$1 ScriptAliasMatch \ "(?x)^/repo/(.*/(HEAD | \ info/refs | \ objects/(info/[^/]+ | \ [0-9a-f]{2}/[0-9a-f]{38} | \ pack/pack-[0-9a-f]{40}\.(pack|idx)) | \ git-(upload|receive)-pack))$" \ /usr/libexec/git-core/git-http-backend/$1 <Directory "/usr/libexec/git-core/"> Options +ExecCGI Allow From All </Directory> <LocationMatch "^/repo/.*/git-receive-pack$"> AuthType Basic AuthName "Git" Require valid-user AuthUserFile /etc/apache2/other/htpasswd </LocationMatch> </VirtualHost>
这里是httpd -S的输出:
VirtualHost configuration: wildcard NameVirtualHosts and _default_ servers: *:8000 localhost (/private/etc/apache2/other/gitrepo.conf:1) Syntax OK
我已经在我的服务器端gitconfiguration中启用了http.receivepack ( = true ):
[http] receivepack = true
任何想法我应该做什么?
那么,因为这是在8000的虚拟主机,我会假定你想curl http:// localhost:8000 /,而不是http:// localhost /。 除此之外,只要确保mod_cgi已启用。