Skip to content

Gitosis

andyceo edited this page Jan 5, 2014 · 1 revision

Тестировалось под Ubuntu 10.04.2 LTS.

Пусть адрес нашего сервера, где мы хотим хостить git-репозитории, будет таким: git.ruware.com. Клиент в данной инструкции - это компьютер пользователя, который будет работать с репозиториями, синхронизируясь через сервер. Клиентов может быть множество. Среди клиентов выделяется тот, который может работать с git-репозиторием самого Gitosis, назовем его для простоты клиент-администратор. Действия, которые в данной инструкции помечены как "Действие на клиенте", должно быть выполнено на каждом из клиентов, кроме тех действий, о которых оговорено особо, что они должны быть выполнены только на клиенте-администраторе.

  • Действие на сервере: Устанавливаем Gitosis из пакетов:
sudo aptitude update
sudo aptitude install python-setuptools
sudo aptitude install gitosis
  • Действие на клиенте: убедимся, что у пользователя операционной системы, есть ssh-ключ. Если нет, то сгенерим: http://help.github.com/linux-key-setup/. Копируем публичный ключ на сервер, пусть он после копирования лежит на сервере здесь: /tmp/id_rsa.pub

  • Действие на сервере: sudo -H -u gitosis gitosis-init < /tmp/id_rsa.pub Эта команда, проинициализирует репозиторий управления проектами и импортирует ключ наш ключ клиента-администратора

  • Действие на клиенте: убедимся, что Gitosis работает правильно:

ssh gitosis@git.ruware.com
ERROR:gitosis.serve.main:Need SSH_ORIGINAL_COMMAND in environment.
Connection to git.ruware.com closed.</code>
  • Действие только на клиенте-администраторе: клонируем git-репозиторий Gitosis, для управления проектами:
mkdir gitosis-admin
git clone gitosis@git.ruware.com:gitosis-admin.git 
$ cd gitosis-admin
  • Действие только на клиенте-администраторе: добавляем проект Notes:
vim gitosis.conf
[group writers]
writable = Notes
members = your_email@example.com
  • Действие только на клиенте-администраторе: записываем изменения в конфигурации обратно на сервер:
git commit -am 'add project Notes and group writers'
git push

Теперь, администратор может создать репозиторий Notes сначала у себя локально, а затем объявить удаленный репозиторий origin на сервере и Gitosis создаст его.

  • Создадим проект локально:
mkdir ~/Notes
cd ~/Notes
git init
touch Readme
git add Readme
git commit -am "Initial commit"
  • Зарегистрируем адрес удаленного репозитория:git remote add origin gitosis@git.host.com:Notes.git

  • Отправляем изменения в локальном репозитории в удаленный: git push -u origin master

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

Для того, чтобы другой пользователь мог осуществлять клонирование репозиториев и внесение изменений в них, нужно добавить его ключ в админ-репозиторий Gitosis. Об этом подробно написано по ссылкам:

Sidebar is under construction

Clone this wiki locally