В качестве возможности провести свободное время, расскажу свой опыт настройки сервера gitolite на Linux машине и организовать работу клиента на Mac OS :)
На старте у нас имеется сервер под управлением CentOS, который будет выступать хостингом репозиториев; и клиент на Mac OS Yosemite, который будет с ним работать.
Для самого начала нам потребуются ssh ключи. На любой машине генерим приватный и публичный ключ командой
ssh-keygen -t rsa
После этого будет создана пара ключей
~/.ssh/id_rsa.pub
и
~/.ssh/id_rsa
Эти ключи будут использоваться для администратора gitolite, но их так же можно использовать и для себя в качестве клиента, поэтому можно создавать их и на клиентской машине. Далее я буду рассматривать ситуацию когда эти ключи используются как для админа так и для клиента, поэтому приватный ключ должен оказаться на клиентской машине, например в файле ~/.ssh/git, а публичный - на сервере в файле /tmp/git.pub.
Важное замечание, если вы генерите non-openssh public keys, например, при помощи PuTTY gen, то для использования в gitolite публичный ключ придется конвертировать командой
ssh-keygen -i -f /tmp/ssh2/YourName.ppk > /tmp/openssh/YourName.pub
Это типичная проблема при использовании, например, TurtoiseGit на windows, когда для того чтоб он принял ключ он должен быть в формате *.ppk, а на сервере - в фомате openssh.
Итак публичный ключ администратора у нас лежит в /tmp/git.pub, начинаем с установки gitolite.
Для начала надо понять какой gitolite нам доступен при помощи
yum search gitolite
а потом переходим к установке
sudo yum install gitolite3
sudo useradd git
sudo su git
gitolite setup -pk /tmp/git.pub
На этом в общем вся настройка готова. Если подробнее, то штатным способом ставим gitolite, потом мы добавляем пользователя git под которым будет осуществляться работа gitolite, и из под этого пользователя делаем первичную настройку gitolite.
В результате в /home/git у нас появилась папка repostitories в которой два репозиторя
[git@host repositories]$ ll
итого 8
drwx------. 8 git git 4096 фев 11 15:50 gitolite-admin.git
drwx------. 7 git git 4096 фев 11 15:50 testing.git
gitolite-admin предназначен для управления пользователями и правами, а
testing - это репозиторий с которым можно поиграться.
Управление конфигураций gitolite осуществляется через коммиты в gitolite-admin, поэтому об этом я расскажу ниже, после настройки клиента.
В принципе git на Mac OS Yosemite уже есть, но чтоб им пользоваться надо ставить XCode, поэтому берем и ставим git с официального сайта.
Далее, в принципе, можно жить и работать с git в консоли, но я для себя выбрал gui клиента SourceTree, он бесплатен, хоть и требует регистрации через месяц, но она тоже бесплатная. В целом им вполне удобно пользоваться даже после виндового TurtoiseGit. Далее рассказ буду вести исходя из того что у меня SourceTree.
Итак наш приватный ключ у нас в ~/.ssh/id_rsa и наш сервер имеет адрес git.myhost.com.
Для начала нужно объяснить ssh что на git.myhost.com нужно для пользователя git авторизовываться при помощи ключа, идем и правим/создаем ~/.ssh/config в котором пишем:
Host git.myhost.com
HostName git.myhost.com
User git
IdentityFile ~/.ssh/id_rsa
Далее открываем SourceTree и в нем жмем новый репозиторий -> клонировать по URL. Заполняем поле URL источника
git@git.myhost.com:gitolite-admin
Остальные на свое усмотрение. Открываем репозиторий и нажимаем "получить", теперь у нас есть текущая конфигурация нашего gitolite. После ее изменения коммитим и отправляем данные в удаленный репозиторй для изменения конфигурации.
На этом процесс настройки клиента закончен.
Вся она расположена в репозитории gitolite-admin, который состоит из двух папок conf и keydir. Внутри keydir хранятся публичные ключи пользователей, где имя файла - это логин пользователя. А в conf всего один файл с конфигурацией, которая максимально проста, вот например
@admins = admin superadmin
repo gitolite-admin
RW+ = @admins
RW = user1
R = @all
repo testing
RW+ = @all
Здесь у нас определена группа admins, с двумя логинами и описаны права на репозитории. Сразу хочу заметить что при помощи @ можно создавать не только группы пользователей, но и группы репозиориев.
Описание возможных прав:
Объекты доступа могут быть:
Более подробно по конфигу можно все найти в гугле или на официальном сайте.
Ну и в заключении набор полезных ссылок по теме: