Конфигурация проектов в gitosis

После того, как gitosis установлен и настроен доступ к нему из вне, можно переходить к созданию отдельных хранилищ проектов.

Для конфигурирования gitosis используется инфраструктура git. При инициализации нового репозитория всегда создается проект gitosis-admin, где хранятся файлы конфигураций и ключи доступа. Как только в этот проект делается комит с изменениями настроек они сразу же применяются. Это обеспечивается скриптом post-update. Нужно убедиться, что он может выполняться.

sudo chmod 755 /Users/git/repositories/gitosis-admin.git/hooks/post-update

Сделаем копию этого проекта на рабочем компьютере

git clone git@repo.local:gitosis-admin.git

В файле gitosis.conf содержится описание проектов и прав доступа к ним, а в директории keydir — публичные ключи других пользователей репозитория.

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

git commit -a -m "Комментарий к комиту"
git push

Создание нового проекта

Исходная конфигурация в gitosis.conf

[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = user1

В строке members перечисляются имена ключей (без расширения .pub), которые лежат в папке keydir.

По аналогии добавим еще одну группу:

[group project1]
writable = project1
members = user1

Эти правила задают группу project1, в которую входит пока только 1 пользователь user1. Все пользователи из этой группы имеют доступ для записи в проект project1.

Сохраним изменения и опубликуем их в удаленный репозиторий.

Теперь создадим сам проект. На рабочем компьютере выполним команды:

mkdir project1
cd project1
git init
git remote add origin git@repo.local:project1.git

Было бы хорошо, если к этому моменту у вас уже были какие-либо файлы, которые можно отправить в репозиторий. Если таковых нет, то нужно создать пусть даже пустой файл, чтобы его опубликовать (потом этот файл можно удалить или отредактировать).

touch file.txt

Отправляем проект в удаленный репозиторий:

git add .
git commit -a -m 'init commit'
git push origin master:refs/heads/master

Проект с названием project1 будет создан на сервере в директории /Users/git/repositories/