Поднимаем gitosis, сервер системы контроля версий

9 ноября 2011 г.

Сегодня я расскажу тебе сказку о том как поднять gitosis сервер на Linux машине.
Как ты наверно догадываешься речь пойдет о системе котроля версий git и сервере gitosis для удаленного хранения репозиториев с проектами. Кому интересна эта тема добро пожаловать под кат.
Для начала нам понадобится машина со статическим ip на которой будет крутится сервер.

Настраиваем сервер

Тут предполагается что все манипуляции происзодятся на машине которая имеет статический ip и будет использоваться в качестве сервера.

1. Первое что нам нужно сделать, это установить пакеты gitosis на сервер.

$mkdir ~/src
$git clone git:/eagain.net/gitosis.git
$cd gitosis
$sudo python setup.py install

Если вы видите что-то типа этого

-bash: python: command not found

или этого

Traceback (most recent call last):
 File "setup.py", line 2, in ?
 from setuptools import setup, find_packages
ImportError: No module named setuptools

То Вам нужно установить пакет python и python-setuptools. У меня это выглядит так
emerge python у Вас может быть как-то подругому, например так apt get-install python-setuptools

2. Второе что нам нужно сделать это создать пользователя, который будет управлять репозиториями

$sudo adduser \

--system \
 --shell /bin/sh \
 --gecos 'git version control' \
 --group \
 --disabled-password \
 --home /home/git \
 git

И так мы создали пользователя по имени git с домашним каталогом /home/git в котором кстати и будут храниться репозитории.

3. Далее нужно создать public key для пользователя git, чтобы инициализировать репозиторий. И делается это следующий образом.

$ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/git/.ssh/id_rsa):/ssh key path/key name
$sudo -H -u git gitosis-init < /sshkeypath/keyname.pub
$sudo chmod 755 /home/git/repositories/gitosis-admin/hooks/post-update

Настраиваем клиент.

Здесь почти все манипуляции будут проводиться на клиентском компьютере, а там где нужно будет лезть на серверную машину я напишу.

4. Далее мы клонируем установки gitosis на клиентскую машину и добавляем новых пользователей.

$git clone git@youserverhostname:repositories/gitosis-admin.git
$cd gitosis-admin
$vim gitosis.conf

Этот репозиторий который мы склонировали содержит все файлы необходимые для управления репозиториями создания новых проектов и добавления новых пользователей к проектам. Теперь в папке gitosis-admin есть файлик gitosis.conf и папка keydir в которой хранятся паблик ключи пользователей.
Файл gitosis.conf имеет следующее содержание

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

Синтаксис очень простой чтобы добавить новый репозиторий нужно всего лишь добавить новую группу.

[group megaproject]
members = git bug loki
writable = megaproject

Тут мы добавили новую группу mmymegagroup в которой состоят пользователи git bug loki и эти пользователи имет право записи в репозиторий mmymegaproject.
5. Далее мы сохраняем файл gitosis.conf, делаем коммит в локальный репозиторий и пушим на сервер изменения.

$git commit -a -m "Access granted for user bug git loki"
$git push 

Итак мы добавили пользователей проект и группу, но у нас по прежнем нету репозитория на сервере. Как раз это мы должны провернуть на сервере а не на клиенте.
6. Инициализируем репозиторий на сервере.

$mkdir ~/repositories/megaproject.git
$cd megaproject.git
$git --bare init

7. Инициализируем репозиторий на клиенте.

$mkdir megaproject
$cd megaproject
$git init
$git remote add master git@youserverhostname:repositories/megaproject.git
$echo "Start megaproject" > Readme
$git add Readme
$git commit -a -m "Start megaproject"
$git push master master

Вот и все манипуляции, которые надо провести для создания своего удаленного сервера git репозиториев. Надеюсь эта статья поможет сделать твою git хостинговую жизнь легче.

Теги: рубрика Linux
  • Похожие статьи
  • Предыдущие из рубрики