Git push over http (usando git-http-backend) e Apache non funziona


11

Ho cercato disperatamente di fare in modo che git funzionasse attraverso la modalità "smart-http" usando git-http-backend. Tuttavia, dopo molte ore di test e risoluzione dei problemi, mi rimane ancora

error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-push failed`

Sto usando le ultime versioni di Ubuntu (12.04), Apache2 (2.2.22) e Git (1.7.9.5) e ho seguito diversi tutorial trovati su Internet, come questo http://www.parallelsymmetry.com/howto/git .jsp .

Il mio file VHost è attualmente simile al seguente:

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

Ho modificato la proprietà della /var/www/gitcartella in root.www-datae per i miei repository di test ho attivato il push anonimo git config http.receivepack true. Ho anche provato con utenti autenticati ma con lo stesso risultato.

I repository sono stati creati utilizzando: sudo git init --bare --shared [repo-name]

Guardando apache2 access.log, mi sembra che WebDAV stia cercando di essere usato e che git-http-backend non venga mai attivato:

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"

Che cosa sto facendo di sbagliato? È forse un problema con la versione di git e / o apache che sto usando?

A proposito: ho letto tutte le domande relative a http git su ServerFault e StackOverflow e nessuna di esse mi ha fornito una soluzione, quindi per favore non contrassegnarla come duplicata.


Sto affrontando lo stesso identico problema, hai avuto qualche soluzione?
Rishi Kulshreshtha,

@RishiKulshreshtha: Siamo spiacenti, non ho trovato alcuna soluzione. Passato a GitHub invece ... Detto questo, non ho provato la soluzione di Deepika. Se qualcuno può verificare che funzioni accetterò quella risposta.
Nils Magne Lunde,

Ok, ho provato la soluzione di Deepika, ma senza successo.
Nils Magne Lunde,

Anche io ho provato la soluzione di Deepika proprio ora, che non ha funzionato anche per me.
Rishi Kulshreshtha,

Risposte:


1

Penso che il fatto che WebDAV venga utilizzato significhi che le tue cose CGI non sono configurate correttamente.

Prova a utilizzare la direttiva ScriptAlias ​​nel modo in cui viene mostrata nell'esercitazione che hai dichiarato di seguire.

ScriptAlias /git /usr/lib/git-core/git-http-backend

Ciao. Ho iniziato a utilizzare la direttiva ScriptAlias, ma non ha funzionato.
Nils Magne Lunde,

Lo stesso problema qui. Hai trovato una soluzione?
theV0ID

@ theV0ID No, non ho mai trovato una soluzione. Usando GitHub ora invece di un server Git locale.
Nils Magne Lunde,

0

Per risolvere questo problema, dobbiamo abilitare WebDav sul server apache in 2 passaggi

  1. abilita al file vhost di 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. Esegui questo comando al prompt dei comandi

    a2enmod dav_fs

  2. Quindi riavviare il server Apache.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.