Я настраиваю git-сервер с git-http-backend и Smart HTTP, но 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
Вот мой конфиг:
<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
И у меня есть http.receivepack
включен (= true
) в моей конфигурации git на стороне сервера:
[http]
receivepack = true
Есть идеи, что мне делать?
Что ж, поскольку это виртуальный хост для: 8000, я предполагаю, что вы захотите свернуть http: // localhost: 8000 /, а не http: // localhost /. Помимо этого, просто убедитесь, что mod_cgi включен.