Eu tenho tentado desesperadamente entrar em contato com o git pelo modo "smart-http" usando o git-http-backend. No entanto, depois de muitas horas de teste e solução de problemas, ainda estou com
error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-push failed'
Estou usando as versões mais recentes do Ubuntu (12.04), Apache2 (2.2.22) e Git (1.7.9.5) e segui diferentes tutoriais encontrados na Internet, como este link .
Meu arquivo VHost atualmente é assim:
<VirtualHost *:80>
SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
DocumentRoot /var/www/git
ScriptAliasMatch \
"(?x)^/(.*?)\.git/(HEAD | \
info/refs | \
objects/info/[^/]+ | \
git-(upload|receive)-pack)$" \
/usr/lib/git-core/git-http-backend/$1/$2
<Directory /var/www/git>
Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
</VirtualHost>
Alterei a propriedade da pasta /var/www/git
para root.www-data
e, para meus repositórios de teste, ativei o envio anônimo com git config http.receivepack true
.
Eu também tentei com usuários autenticados, mas com o mesmo resultado.
Os repositórios foram criados usando:
sudo git init --bare --shared [repo-name]
Ao olhar para o apache2 access.log, parece-me que o WebDAV está tentando ser usado e que o git-http-backend nunca é disparado:
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "GET /git/hello.git/info/refs?service=git-receive-pack HTTP/1.1" 200 207 "-" "git/1.7.9.5"
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "GET /git/hello.git/HEAD HTTP/1.1" 200 232 "-" "git/1.7.9.5"
127.0.0.1 - - [20/May/2012:23:04:53 +0200] "PROPFIND /git/hello.git/ HTTP/1.1" 405 563 "-" "git/1.7.9.5"
O que estou fazendo de errado?
É um problema com a versão do git e / ou apache que estou usando, talvez?
BTW: Eu li todas as questões relacionadas ao http do git no ServerFault e no StackOverflow, e nenhuma delas me forneceu uma solução, então, por favor, não marque isso como duplicado.