Управление 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).