Управление http-доступом к репозиториям git с помощью gitosis - PullRequest
3 голосов
/ 16 сентября 2010

[Обновление от 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 Ответ

1 голос
/ 16 сентября 2010

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

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


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

...