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/git
folder menjadi root.www-data
dan 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.
sumber
Jawaban:
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.
sumber
Untuk memperbaikinya, kita perlu mengaktifkan WebDav di server apache menggunakan 2 langkah
Jalankan perintah ini di command prompt
Kemudian restart server apache.
sumber