Git проталкивает 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и для своих тестовых репозиториев я активировал анонимный push 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, которую я использую?

Кстати, я прочитал все вопросы, связанные с git http, на ServerFault и StackOverflow, и ни один из них не дал мне решения, поэтому, пожалуйста, не отмечайте это как дубликат.

Нильс Магне Лунде
источник
У меня точно такая же проблема, у вас есть какое-нибудь решение?
Риши Кулшрештха
@RishiKulshreshtha: Извините, не нашел никакого решения. Вместо этого перешел на GitHub ... Тем не менее, я не пробовал решение от 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 файл 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. Запустите эту команду в командной строке

    a2enmod dav_fs

  2. Затем перезапустите сервер Apache.

Дипика Шримантула
источник