Я відчайдушно намагався підштовхнути git, працюючи в режимі "smart-http", використовуючи git-http-backend. Однак після багатьох годин тестування та усунення несправностей я все ще залишаюсь
error: Cannot access URL http://localhost/git/hello.git/, return code 22
fatal: git-http-push failed`
Я використовую останні версії Ubuntu (12.04), Apache2 (2.2.22) та Git (1.7.9.5) і дотримуюся різних навчальних посібників, знайдених в Інтернеті, як ця http://www.parallelsymmetry.com/howto/git .jsp .
Наразі мій файл VHost виглядає так:
<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/git
папку root.www-data
і для своїх тестових сховищ я ввімкнув анонімне натискання git config http.receivepack true
. Я також намагався з автентифікованими користувачами, але з тим же результатом.
Репозиторії були створені за допомогою:
sudo git init --bare --shared [repo-name]
Переглядаючи apache2 access.log, мені здається, що WebDAV намагається використовувати, і що git-http-backend ніколи не запускається:
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"
Що я роблю неправильно? Можливо, це проблема з версією git та / або apache, яку я використовую?
BTW: Я прочитав усі питання, пов’язані з git http на ServerFault та StackOverflow, і жодне з них не дало мені рішення, тому, будь ласка, не позначайте це як дублікат.