GitoLite

Система управления доступами для git по ssh. Проще говоря ACL.

Установка

Проще простого

# apt-get install gitolite3

Настройка

Выбираем пользователя, под которым все разработчики будут заходить на сервер (обычно создаётся пользователь git), превращаемся посредством su в него и начинаем настройку gitolite.

Перво-наперво нам понадобится инициализировать gitolite. Для этого на понадобится открытый ключ первого админа, который будет управлять ACL. Команда инициализации проста:

# gitolite setup -pk /tmp/owlbook.pub

В процессе будут созданы всевозможные сопутствующие директории и репозитории (по умолчанию в директории repositories. Если мы используем CGit или GitWeb - стоит сразу же в корне репозитория gitolite-admin.git создать файл с именем noweb, чтобы репозиторий не отображался в списке в web-морде.

На этом, пожалуй, установка и заканчивается.

Использование

Для того, чтобы изменить ACL теперь админу достаточно склонировать gitolite-admin.git с сервера по ssh и поправить его требуемым образом. Создание репозиториев происходит автоматически, как только они повляются в conf/gitolite.conf. Так же и с новыми пользователями.

Для добавления нового пользователя требуется положить его открытый ключ в директорию keydir/ с именем <username>.pub. При коммите репозитория на сервер будет выдан доступ новому пользователю по его ключу, дальше требуется уже в conf/gitlote.conf править ACL для пользователя.

Каждому репозиторию можно задать описание. Делается это простой командой

# ssh git@git.owlhost.in desc <gitrepo> <Descriptiont text>

И если пользователь является владельцем этого репозитория (право C в gitolite.conf) или в конфигурации (.gitolite.rc в домашней директории на сервере) указано

WRITER_CAN_UPDATE_DESC          =>  1,

и у пользователя есть право записи в этот репозиторий - то изменится описание репозитория (для CGit в файле .gitolite.rc так же нужно добавить в модули cgit)

А вот удаление репозиториев с помощью gitloite не производится. Даже если вычистить репозиторий из конфига - всё равно придётся идти руками и вычищать его с сервера. Это сделано ради вашей же безопасности!