4

I'm setting up a git server with git-http-backend and Smart HTTP but Apache doesn't seem to be calling the 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

Here's my config:

<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>

Here's the output of httpd -S:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:8000                 localhost (/private/etc/apache2/other/gitrepo.conf:1)
Syntax OK

And I have got http.receivepack enabled (= true) in my server-side git config:

[http]
  receivepack = true

Any ideas of what I should do?

Bo A
  • 153
  • 1
  • 6

1 Answers1

1

Well, since that's in the virtualhost for :8000, I would presume you'd want to curl http:// localhost:8000/, not http:// localhost/. Beyond that, just make sure mod_cgi is enabled.