Git push http (за допомогою git-http-backend) і Apache не працює


11

Я відчайдушно намагався підштовхнути 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, і жодне з них не дало мені рішення, тому, будь ласка, не позначайте це як дублікат.


Я зіткнувся з точно таким же питанням, чи було у вас якесь рішення?
Ріші Кульшрешта

@RishiKulshreshtha: Вибачте, не знайшов жодного рішення. Натомість перейшов до GitHub ... Це сказав, що я не пробував рішення від Deepika. Якщо хтось може перевірити, що це працює, я прийму цю відповідь.
Нільс Магне Лунде

Гаразд, спробував рішення Депіка, але успіху не було.
Нільс Магне Лунде

Навіть я спробував рішення Deepika просто зараз, це також не спрацювало для мене.
Ріші Кульшрешта

Відповіді:


1

Я думаю, що факт, що WebDAV звикає, означає, що ваші CGI-матеріали неправильно налаштовані.

Спробуйте використовувати директиву ScriptAlias ​​так, як вони це показують у підручнику, про який ви сказали, що ви дотримуєтесь.

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

Привіт. Я почав використовувати директиву ScriptAlias, але це не спрацювало.
Нільс Магне Лунде

Тут же проблема. Ви знайшли рішення?
theV0ID

@ theV0ID Ні, я ніколи не знайшов рішення. Використовуйте GitHub зараз замість локального сервера Git.
Нілс Магне Лунде

0

Щоб виправити це, нам потрібно включити WebDav на сервері apache за допомогою 2 кроків

  1. включити в vhost файл апачу

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. Виконайте цю команду в командному рядку

    a2enmod dav_fs

  2. Потім перезапустіть сервер apache.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.