После того, как 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/