Redmine не получает информацию об HTTP Auth (git push over smartHTTP)

Bird_V

Пытаюсь поднять Redmine (1.3.2) в качестве багтрекера/репозитория/вики для одного маленького проекта.
Делаю всё по инструкции (c mod_passenger, но без mongrel и ngnix).
Однако попытка push-нуть чего-нибудь по HTTP (GIT SmartHTTP) не проходит:

git push -u origin master
Password:
Counting objects: 1417, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (819/819 done.
Writing objects: 100% (1417/1417 1.49 MiB, done.
Total 1417 (delta 580 reused 1417 (delta 580)
error: RPC failed; result=22, HTTP code = 500
fatal: The remote end hung up unexpectedly
fatal: The remote end hung up unexpectedly

В логах апача вижу вот такое:

[ pid=13898 thr=140660873234240 file=ext/apache2/Hooks.cpp:862 time=2012-07-21 15:00:33.463 ]: Unexpected error in mod_passenger: An error occured while sending the request body to the request handler: Broken pipe (32)
Backtrace:
in 'virtual void Passenger::Session::sendBodyBlock(const char*, unsigned int)' (Session.h:198)
in 'void Hooks::sendRequestBody(request_rec*, Passenger::SessionPtr&, boost::shared_ptr<Passenger::BufferedUpload>&)' (Hooks.cpp:1358)
in 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp:685)

В логах самого redmine-а (после того, как включил полное логгирование) вижу вот что:

Processing GitHttpController#index (for 192.168.56.101 at 2012-07-23 10:43:41) [GET]
Parameters: {"path"=>["info", "refs"], "project_path"=>"hiasm5.git", "service"=>"git-receive-pack", "controller"=>"git_http", "prefix"=>"", "action"=>"index"}
SQL (0.1ms) SELECT max(`settings`.updated_on) AS max_updated_on FROM `settings`
AnonymousUser Load (0.0ms) SELECT * FROM `users` WHERE ( (`users`.`type` = 'AnonymousUser' ) ) LIMIT 1
Setting Load (0.3ms) SELECT * FROM `settings` WHERE (`settings`.`name` = 'default_language') LIMIT 1
Project Load (0.0ms) SELECT * FROM `projects` WHERE (`projects`.`identifier` = 'hiasm5') LIMIT 1
Repository Load (0.0ms) SELECT * FROM `repositories` WHERE (`repositories`.project_id = 1) LIMIT 1
GitRepositoryExtra Load (0.0ms) SELECT * FROM `git_repository_extras` WHERE (`git_repository_extras`.repository_id = 6) LIMIT 1
Repository Load (0.0ms) SELECT * FROM `repositories` WHERE (`repositories`.`id` = 6)
CACHE (0.0ms) SELECT * FROM `projects` WHERE (`projects`.`identifier` = 'hiasm5') LIMIT 1
Completed in 23ms (View: 0, DB: 1) | 200 OK [http://hiasm.local/redmine/hiasm5.git/info/refs?service=git-receive-pack]


Processing GitHttpController#index (for 192.168.56.101 at 2012-07-23 10:43:41) [POST]
Parameters: {"path"=>["git-receive-pack"], "project_path"=>"hiasm5.git", "controller"=>"git_http", "prefix"=>"", "action"=>"index"}
SQL (0.1ms) SELECT max(`settings`.updated_on) AS max_updated_on FROM `settings`
AnonymousUser Load (0.1ms) SELECT * FROM `users` WHERE ( (`users`.`type` = 'AnonymousUser' ) ) LIMIT 1
Project Load (0.1ms) SELECT * FROM `projects` WHERE (`projects`.`identifier` = 'hiasm5') LIMIT 1
Repository Load (0.2ms) SELECT * FROM `repositories` WHERE (`repositories`.project_id = 1) LIMIT 1
GitRepositoryExtra Load (0.1ms) SELECT * FROM `git_repository_extras` WHERE (`git_repository_extras`.repository_id = 6) LIMIT 1
Repository Load (0.1ms) SELECT * FROM `repositories` WHERE (`repositories`.`id` = 6)
Filter chain halted as [:authenticate] rendered_or_redirected.
Completed in 10ms (View: 0, DB: 1) | 401 Unauthorized [http://hiasm.local/redmine/hiasm5.git/git-receive-pack]

В локальном репозитории, из которого push-аю, remote origin прописан таким:

http://hiasm.local/redmine/test.git

Соответственно, в redmine есть пользователь admin, имеющий роль "Developer". Если для admin-а завести ключ шифрования, и делать push по SSH, то всё проходит "на ура".
Ради интереса захватил с помощью Wireshark обмен между клиентом и сервером, и (что странно) я не вижу там запроса пароля.
Поиск в гугле ничего толком не дал: да, в passenger-e были проблемы с HTTP Auth, но их пофиксили год назад. Кроме того, куча сообщений про то, как настроить передачу http auth при использовании fcgi, и никакой информации по
этой теме для passenger'а.
Вопрос стандартный: ЧЯДНТ? Если нужны ещё какие логи - могу попробовать сделать.

agaaaa

Если для admin-а завести ключ шифрования, и делать push по SSH, то всё проходит "на ура".
А почему так не делать всё время?

Frtati

В свое время тоже долго развлекался с ним, в итоге стал использовать стэк redmine от bitnami.
http://bitnami.org/stacks

Bird_V

Скажем так: целевая аудитория проекта не осилит всю эту возню с закрытыми/публичными ключами. А пароли - осилит.

Bird_V

Судя по сайту - у них Subversion, а не GIT.

Frtati

Да, но ничего не мешает настроить интеграцию с git. Доки bitnami написаны лучше оригинальных и скорее всего в итоге выйдет все равно быстрее.
How_to_configure_Redmine_for_advanced_integration_with_Git

Bird_V

Спасибо, попробую.

Bird_V

Решил отказаться от плагина, поставил обычный grack. Всем спасибо, тема закрыта.
Оставить комментарий
Имя или ник:
Комментарий: