Git push sobre http (usando git-http-backend) e o Apache não está funcionando

11

Eu tenho tentado desesperadamente obter push for git trabalhando no modo "smart-http" usando o git-http-backend. No entanto, após muitas horas de teste e solução de problemas, ainda resta

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 http://www.parallelsymmetry.com/howto/git .jsp .

Meu arquivo VHost atualmente se parece com isso:

<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 /var/www/gitpasta para root.www-datae para meus repositórios de teste habilitei o envio anônimo ao fazer isso 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 examinar o apache2 access.log, parece-me que o WebDAV está tentando ser usado e que o git-http-backend nunca é acionado:

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 perguntas relacionadas ao git http no ServerFault e StackOverflow, e nenhuma delas me forneceu uma solução, portanto, não marque isso como duplicado.

Nils Magne Lunde
fonte
Estou enfrentando exatamente o mesmo problema, você conseguiu alguma solução?
Rishi Kulshreshtha
@RishiKulshreshtha: Desculpe, não encontrou nenhuma solução. Em vez disso, mudei para o GitHub ... Dito isso, eu não tentei a solução do Deepika. Se alguém puder verificar se funciona, aceitarei essa resposta.
Nils Magne Lunde
Ok, tentei a solução do Deepika, mas sem sucesso.
Nils Magne Lunde
Até eu tentei a solução Deepika agora, que não funcionou para mim também.
Rishi Kulshreshtha

Respostas:

1

Eu acho que o fato de o WebDAV estar sendo usado significa que o seu material CGI não está configurado corretamente.

Tente usar a diretiva ScriptAlias ​​da maneira que eles mostram no tutorial que você disse que estava seguindo.

ScriptAlias /git /usr/lib/git-core/git-http-backend
Cristian Măgherușan-Stanciu
fonte
Oi. Comecei usando a diretiva ScriptAlias, mas não funcionou.
Nils Magne Lunde
Mesmo problema aqui. Você encontrou uma solução?
theV0ID 4/14
@ theV0ID Não, nunca encontrei uma solução. Agora usando o GitHub em vez de um servidor Git local.
Nils Magne Lunde
0

Para corrigir isso, precisamos ativar o WebDav no servidor apache usando 2 etapas

  1. ativar no arquivo vhost do apache

SetEnv GIT_PROJECT_ROOT /var/www/git
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

DocumentRoot /var/www/git

<Directory /var/www/git>
        Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews

        AllowOverride None
        Order allow,deny
        allow from all
        Dav On
</Directory>

  1. Execute este comando no prompt de comando

    a2enmod dav_fs

  2. Em seguida, reinicie o servidor apache.

Deepika Srimanthula
fonte