Git http üzerinden push (git-http-backend kullanarak) ve Apache çalışmıyor


11

Umutsuzca git-http-arka ucunu kullanarak git "akıllı-http" modunu kullanarak git için itme çalışıyorum. Ancak saatlerce süren test ve sorun giderme işlemlerinden sonra,

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

Ubuntu (12.04), Apache2 (2.2.22) ve Git'in (1.7.9.5) en son sürümlerini kullanıyorum ve internette bulunan farklı eğiticileri takip ettim, http://www.parallelsymmetry.com/howto/git .jsp .

VHost dosyam şu anda şöyle görünüyor:

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

/var/www/gitKlasörün sahipliğini değiştirdim root.www-datave test veri havuzlarım için anonim gönderme yaparak etkinleştirdim git config http.receivepack true. Aynı zamanda kimliği doğrulanmış kullanıcılarla da denedim.

Depolar aşağıdakiler kullanılarak oluşturuldu: sudo git init --bare --shared [repo-name]

Apache2 access.log dosyasına bakarken, WebDAV'ın kullanılmaya çalışıldığı ve git-http-backend'in hiçbir zaman tetiklenmediği anlaşılıyor:

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"

Neyi yanlış yapıyorum? Belki de kullandığım git ve / veya apache sürümü ile ilgili bir sorun mu var?

BTW: ServerFault ve StackOverflow'daki git http ile ilgili tüm soruları okudum ve hiçbiri bana bir çözüm sunmadı, bu yüzden lütfen bunu kopya olarak işaretlemeyin.


Aynı sorunla karşı karşıyayım, herhangi bir çözümünüz var mı?
Rishi Kulshreshtha

@RishiKulshreshtha: Üzgünüm, herhangi bir çözüm bulunamadı. Bunun yerine GitHub'a geçtim ... Bu Deepika'nın çözümünü denemediğimi söyledi. Birisi işe yarayıp yaramadığını doğrulayabilirse bu cevabı kabul edeceğim.
Nils Magne Lunde

Tamam, Deepika'nın çözümünü denedi, ama başarılı olamadı.
Nils Magne Lunde

Deepika'nın çözümünü şimdi denedim bile, bu benim için de işe yaramadı.
Rishi Kulshreshtha

Yanıtlar:


1

WebDAV'ın kullanılması gerçeğinin, CGI öğelerinizin düzgün yapılandırılmadığı anlamına geldiğini düşünüyorum.

ScriptAlias ​​yönergesini, izlediğinizi söylediğiniz öğreticide gösterildikleri şekilde kullanmaya çalışın.

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

Selam. ScriptAlias ​​yönergesini kullanmaya başladım, ancak işe yaramadı.
Nils Magne Lunde

Burada da aynı problem. Bir çözüm buldun mu?
theV0ID

@ theV0ID Hayır, hiç bir çözüm bulamadım. Yerel Git sunucusu yerine GitHub'ı şimdi kullanma.
Nils Magne Lunde

0

Bunu düzeltmek için 2 adımı kullanarak apache sunucusunda WebDav'ı etkinleştirmemiz gerekiyor

  1. apache'nin vhost dosyasında etkinleştir

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. Komut isteminde bu komutu çalıştırın

    a2enmod dav_fs

  2. Ardından apache sunucusunu yeniden başlatın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.