Поднимаем Git на сервере

Будем считать что ОС у нас Debian/Ubuntu; cервер server.name; пользователь на сервере уже создан. Имя его gituser. Домашняя директория – /home/gituser.

Для начала создадим ssh ключ (на клиентской машине). Он понадобится нам в дальнейшем.

$ssh-keygen -t rsa

Попросят ввести путь и имя, куда и с каким названием сгенерируется пара ключей (приватный и публичный). Можно оставить по умолчанию, я же введу другое имя (отметил жирным):

Enter file in which to save the key (/userhome/.ssh/id_dsa):

/userhome/.ssh/developer1

Потом попросят дважды ввести passphrase (пароль). После создания ключей закинем публичный на наш сервер:

$scp ~/.ssh/developer1.pub gituser@server.name:~/.ssh/developer1.pub

Заходим на сервер под нашим пользователем (gituser).

Устанавливаем Git:

$sudo apt-get install git-core

Устанавливаем Gitolite:

$git clone git://github.com/sitaramc/gitolite
 
$gitolite/install -ln

Добавляем публичный ключ в Gitolite (если еще нет публичного ключа, то прочитайте выше как его создать):

$gitolite/src/gitolite setup -pk ~/.ssh/developer1.pub

Репозитории Gitolite хранит в поддиректории repositories домашней папки юзера gituser. Все настройки и ключи хранятся в отдельном репозитории gitolite-admin.git.

Создадим его локальную копию на клиентской машине:

$git clone gituser@server.name:gitolite-admin.git

Чтобы добавить нового пользователя просто записываем его публичный ключ в папку keydir. Имя ключа до окончания .pub будет являться именем пользователя в системе Gitolite. Или добавляем на сервере:

$gitolite/src/gitolite setup -pk ~/.ssh/developer2.pub

 

Для добавления репозитория и/или измениния права редактируем файл conf/gitolite.conf. Затем применяем и отправляем все изменения:

$git add .
 
$git commit -m 'Added new repository and new users'
 
$git push origin master

Можно сгруппировать пользователей или репозитории для удобства:

@repo_group1 = repo_1 repo_2

@repo_group2 = repo_3

@repo_group2 = repo_4

 

@dev_group1 = developer1 developer2

@dev_group1 = developer3 developer4

@dev_group2 = developer5

@all_dev = @dev_group1 @dev_group2 developer6

 

repo @repo_group2

RW+ = @all_dev

repo @repo_group1 repo_5

RW+ = @dev_group1 developer7

Подробнее о конфигурационном файле Gitolite можно прочитать на официальной странице.

Ссылки по теме: