Невозможно отправить каталог через Smart-http - PullRequest
1 голос
/ 22 февраля 2011

Я занимаюсь этим уже два дня подряд, и я разочаровываюсь в поиске решения самостоятельно.Я пытаюсь настроить Redmine на сервере - эта часть прошла хорошо.Я также пытаюсь установить git-репозиторий, но, несмотря на то, что я смог клонировать и извлекать отлично с помощью SSH, я с трудом делаю то же самое по HTTP.

Прежде всего, здесьэто подробная ошибка git push:

===============================================================

$ GIT_CURL_VERBOSE = 1 git push http://192.168.0.13/gitweb/Project master * Не удалосьнайдите хост 192.168.0.13 в файле _netrc;использование значений по умолчанию * О подключении () к порту 192.168.0.13 80 (# 0) * Попытка 192.168.0.13 ... * 0x20ab4f0 находится на голове отправляющего канала!* Подключено к 192.168.0.13 (192.168.0.13) порту 80 (# 0)

GET / gitweb / Project / info / refs? Service = git-receive-pack HTTP / 1.1 User-Agent:git / 1.7.4.3282.g844cb Хост: 192.168.0.13 Принять: / Прагма: без кэширования

  • Запрошенный URL-адрес вернул ошибку: 403
  • Expire очищено
  • Закрытие соединения # 0
  • Не удалось найти хост 192.168.0.13 в файле _netrc;с использованием значений по умолчанию
  • О подключении () к порту 192.168.0.13 80 (# 0)
  • Попытка 192.168.0.13 ... * 0x20ab4f0 в головке отправляющего канала!
  • Подключено к 192.168.0.13 (192.168.0.13) порт 80 (# 0)

    GET / gitweb / Project / info / refs HTTP / 1.1 User-Agent: git / 1.7.4.3282.g844cb Хост: 192.168.0.13 Принимать: / Прагма: без кэширования

  • Запрошенный URL-адрес вернул ошибку: 403

  • Ошибка закрытия соединения № 0: запрошенный URL-адрес вернул ошибку: 403 при обращении к http://192.168.0.13 / gitweb / Project / info / refs

фатально: HTTP-запрос не выполнен

================================================================

Так что, очевидно, есть некоторые неправильно настроенные права, хотя я временно изменил папку своего репозитория на 777.

Я считаю васВас также заинтересует конфигурация apache:

===============================================================

ServerAdmin webmaster @ localhost

[...snip...]

PerlLoadModule Apache::Redmine
SetEnv GIT_PROJECT_ROOT /var/cache/git/
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/

<Location "/git/">
    DAV on
    AuthType Basic
    AuthName "Git Repository"
    Require valid-user

    PerlAccessHandler Apache::Authn::Redmine::access_handler
    PerlAuthenHandler Apache::Authn::Redmine::authen_handler

    RedmineDSN "DBI:mysql:database=redmine;host=localhost"
    RedmineDbUser "redmine" 
    RedmineDbPass "XXXXXXX" 
    RedmineGitSmartHttp yes
</Location>

Alias /gitweb/ "/var/cache/git/public/"
<Location "/gitweb/">
    Order deny,allow
    Deny from all
    <Limit GET PROPFIND OPTIONS REPORT>
       Options Indexes FollowSymLinks MultiViews
       Allow from 127.0.0.1
       Allow from localhost
    </Limit>
</Location>

===============================================================

Так что если кто-то будет так любезен, дайте мненамек на то, что делать, я был бы очень благодарен.Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 22 февраля 2011

Ладно, проблема решена :) Это учебное пособие, которое следует за буквой:

http://www.redmine.org/projects/redmine/wiki/HowTo_configure_Redmine_for_advanced_git_integration

В моем случае окончательная запись выглядит так:

PerlLoadModule Apache::Redmine

Alias /git/ "/var/cache/git/public/"
<Directory "/git/">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

<Location "/git/">
    DAV on
    AuthType Basic
    AuthName "My Git Repository"
    Require valid-user

    PerlAccessHandler Apache::Authn::Redmine::access_handler
    PerlAuthenHandler Apache::Authn::Redmine::authen_handler

    RedmineDSN "DBI:mysql:database=redmine;host=localhost"
    RedmineDbUser "redmine" 
    RedmineDbPass "XXXXXXX" 
    RedmineGitSmartHttp yes
</Location>
0 голосов
/ 22 февраля 2011

Вы не используете аутентификацию.По умолчанию git разрешает отправку через smart-http только при использовании аутентификации.

Вы можете добавить имя пользователя к URL-адресу, который вы используете, и вам будет предложено ввести пароль, или вы можете установитьимя пользователя и пароль в файле _netrc.

...