Git mendorong http (menggunakan git-http-backend) dan Apache tidak berfungsi

11

Saya sudah mati-matian berusaha untuk mendorong agar git bekerja melalui mode "smart-http" menggunakan git-http-backend. Namun setelah beberapa jam pengujian dan pemecahan masalah, saya masih tertinggal

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

Saya menggunakan versi terbaru dari Ubuntu (12.04), Apache2 (2.2.22) dan Git (1.7.9.5) dan telah mengikuti berbagai tutorial yang ditemukan di Internet, seperti ini http://www.parallelsymmetry.com/howto/git .jsp .

File VHost saya saat ini terlihat seperti ini:

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

Saya telah mengubah kepemilikan /var/www/gitfolder menjadi root.www-datadan untuk repositori pengujian saya, saya telah mengaktifkan push anonim dengan melakukan git config http.receivepack true. Saya juga telah mencoba dengan pengguna yang diautentikasi tetapi dengan hasil yang sama.

Repositori dibuat menggunakan: sudo git init --bare --shared [repo-name]

Sambil melihat apache2 access.log, menurut saya WebDAV sedang mencoba untuk digunakan, dan git-http-backend tidak pernah dipecat:

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"

Apa yang saya lakukan salah? Apakah ini masalah dengan versi git dan / atau apache yang mungkin saya gunakan?

BTW: Saya telah membaca semua pertanyaan terkait git http di ServerFault dan StackOverflow, dan tidak ada yang memberikan saya solusi, jadi tolong jangan tandai ini sebagai duplikat.

Nils Magne Lunde
sumber
Saya menghadapi masalah yang sama persis, apakah Anda punya solusi?
Rishi Kulshreshtha
@RishiKulshreshtha: Maaf, tidak menemukan solusi. Pindah ke GitHub sebagai gantinya ... Yang mengatakan saya belum mencoba solusi dari Deepika. Jika seseorang dapat memverifikasi bahwa itu berfungsi, saya akan menerima jawaban itu.
Nils Magne Lunde
Ok, coba solusi Deepika, tetapi tidak berhasil.
Nils Magne Lunde
Bahkan saya mencoba solusi Deepika sekarang, itu tidak berhasil untuk saya juga.
Rishi Kulshreshtha

Jawaban:

1

Saya pikir fakta bahwa WebDAV mulai digunakan berarti bahwa barang CGI Anda tidak dikonfigurasi dengan benar.

Cobalah untuk menggunakan arahan ScriptAlias ​​seperti yang mereka perlihatkan dalam tutorial yang Anda katakan Anda ikuti.

ScriptAlias /git /usr/lib/git-core/git-http-backend
Cristian Măgherușan-Stanciu
sumber
Hai. Saya mulai menggunakan arahan ScriptAlias, tetapi tidak berhasil.
Nils Magne Lunde
Masalah yang sama disini. Sudahkah Anda menemukan solusinya?
theV0ID
@ theV0ID Tidak, saya tidak pernah menemukan solusi. Menggunakan GitHub sekarang, bukan server Git lokal.
Nils Magne Lunde
0

Untuk memperbaikinya, kita perlu mengaktifkan WebDav di server apache menggunakan 2 langkah

  1. aktifkan di file vhost dari 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. Jalankan perintah ini di command prompt

    a2enmod dav_fs

  2. Kemudian restart server apache.

Deepika Srimanthula
sumber