Управление http-доступом к репозиториям git с помощью gitosis

[Обновление 16.09.2010]

Посмотрев на эту последнюю ночь, я понял, что мой первоначальный вопрос действительно задавал две разные вещи:

1) Можно ли установить хук после обновления для всех удаленных репозиториев, созданных с помощью gitosis (т.е. не нужно выполнять вручную mv hooks/post-update.sample hooks/post-update после создания репозитория в gitosis) Это необходимо для клонирования через HTTP для работы (тупые клиенты HTTP полагаются на тот факт, что git update-server-info вызывается из хука после обновления).

2) Как только хранилище станет доступным по HTTP, можно ли включать и выключать доступ с помощью параметра в gitosis.conf (что-то похожее на daemon = no или же gitweb = yes)

--- Решение вопроса 1 ---

Оказывается, что Git использует шаблоны для создания новых репозиториев с git init команда. Выполняя mv hooks/post-update.sample hooks/post-update в каталоге шаблонов все будущие вызовы git init на моем сервере будет правильно настроен хук после обновления. (В OSX каталог шаблонов /opt/local/share/git-core/templates/ для тех, кто заботится)

Другим требованием для этого является включение правил перезаписи Apache, чтобы URL-адрес клонирования HTTP для хранилища выглядел следующим образом http//git.example.com/repo.git

Мои правила переписывания в /etc/apache2/extra/httpd-vhosts.conf выглядеть так:

# turning on mod rewrite
RewriteEngine on

# make the front page an internal rewrite to the gitweb script
RewriteRule ^/$ /cgi-bin/gitweb.cgi [L,PT]

# make access for "dumb clients" work
RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /cgi-bin/gitweb.cgi%{REQUEST_URI} [L,PT]

--- Все еще ищем решение вопроса 2... ПОМОГИТЕ! :) ---

Теперь, когда клонирование HTTP работает для всех моих репозиториев, мне интересно, есть ли способ управлять контролем доступа HTTP с помощью gitosis. настройка daemon = no а также gitweb = no отключает git-daemon и доступ к gitweb для репозитория, но поскольку правила перезаписи Apache все еще включены, репозиторий по -прежнему может клонироваться в http://git.example.com/repo.git, Любые идеи о том, как использовать Gitosis, чтобы справиться с этим?

[Вопрос, который я первоначально отправил]

Можно ли управлять http-доступом к репозиториям git с помощью gitosis? Например, в gitosis.conf я могу управлять доступом для gitweb и git-demon, используя:

# Allow gitweb to show this repository.
gitweb = yes

# Allow git-daemon to publish this repository.
daemon = no

В настоящее время я могу клонировать свой репозиторий, выполнив следующую команду:

$ git clone git://git.example.com/repo.git

Тем не менее, когда я запускаю следующую команду:

$ git clone http://git.example.com/repo.git

Я получаю следующее сообщение об ошибке:

fatal: http://git.example.com/repo.git/info/refs not found: did you run git update-server-info on the server?

Однако, если я войду на свой сервер и выполню следующее из repo.git:

# From http://progit.org/book/ch4-5.html
$ cd project.git
$ mv hooks/post-update.sample hooks/post-update
$ chmod a+x hooks/post-update
$ git update-server-info

тогда клонирование по http работает нормально.

Есть ли способ управлять http-доступом к хранилищу изнутри gitosis?

1 ответ

Gitweb уже настроен и работает? Посмотрите этот блог, чтобы узнать, как настроить gitosis с помощью gitweb.

Кстати, основной особенностью Gitolite является то, что у вас могут быть очень хорошие разрешения. то есть. контрольное разрешение на филиал.


ОБНОВЛЕНИЕ: Я думаю, что интеграция Gitosis с Gitweb в основном, если она появляется в списке проектов. Это не контролирует разрешение на gitweb; это делается через веб-сервер (apache).

Другие вопросы по тегам