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.