Поднимаем gitosis, сервер системы контроля версий
Сегодня я расскажу тебе сказку о том как поднять 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 хостинговую жизнь легче.