Git wypycha http (używając backendu git-http) i Apache nie działa


11

Desperacko próbuję nakłonić git do pracy w trybie „smart-http” za pomocą backendu git-http. Jednak po wielu godzinach testowania i rozwiązywania problemów nadal mi pozostaje

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

Korzystam z najnowszych wersji Ubuntu (12.04), Apache2 (2.2.22) i Git (1.7.9.5) i wykonałem różne samouczki znalezione w Internecie, takie jak ten http://www.parallelsymmetry.com/howto/git .jsp .

Mój plik VHost wygląda obecnie tak:

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

Zmieniłem własność /var/www/gitfolderu na root.www-datai dla moich testowych repozytoriów włączyłem anonimowe wypychanie git config http.receivepack true. Próbowałem również z uwierzytelnionymi użytkownikami, ale z tym samym rezultatem.

Repozytoria zostały utworzone przy użyciu: sudo git init --bare --shared [repo-name]

Patrząc na apache2 access.log, wydaje mi się, że WebDAV próbuje zostać użyty i że backend git-http nigdy nie jest uruchamiany:

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"

Co ja robię źle? Czy to problem z wersją git i / lub apache, której używam, być może?

BTW: Przeczytałem wszystkie pytania związane z git http na ServerFault i StackOverflow i żadne z nich nie dostarczyło mi rozwiązania, więc proszę nie oznaczać tego jako duplikatu.


Mam dokładnie ten sam problem, czy masz jakieś rozwiązanie?
— Rishi Kulshreshtha

@RishiKulshreshtha: Przepraszamy, nie znalazłem żadnego rozwiązania. Zamiast tego przeszedłem na GitHub ... To powiedziawszy, że nie wypróbowałem rozwiązania Deepiki. Jeśli ktoś może sprawdzić, czy to działa, zaakceptuję tę odpowiedź.
— Nils Magne Lunde,

Ok, wypróbowałem rozwiązanie Deepiki, ale bez powodzenia.
— Nils Magne Lunde,

Nawet teraz wypróbowałem rozwiązanie Deepiki, które również nie zadziałało.
— Rishi Kulshreshtha

Odpowiedzi:


1

Myślę, że fakt korzystania z WebDAV oznacza, że ​​twoje elementy CGI nie są poprawnie skonfigurowane.

Spróbuj użyć dyrektywy ScriptAlias ​​w sposób, w jaki pokazują ją w samouczku, który powiedziałeś, że obserwujesz.

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

Cześć. Zacząłem od dyrektywy ScriptAlias, ale to nie działało.
— Nils Magne Lunde

Mam ten sam problem. Znalazłeś rozwiązanie?
— theV0ID,

@ theV0ID Nie, nigdy nie znalazłem rozwiązania. Używanie GitHub teraz zamiast lokalnego serwera Git.
— Nils Magne Lunde

0

Aby to naprawić, musimy włączyć WebDav na serwerze Apache, wykonując 2 kroki

  1. włącz w pliku vhost 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. Uruchom to polecenie w wierszu polecenia

    a2enmod dav_fs

  2. Następnie zrestartuj serwer Apache.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.