Содержание

Установка и настройка Gitolite

Gitolite— это средство для создания централизованных репозиториев для совместной разработки через Git.

Gitolite позволяет легко и безопасно размещать репозитории Git, указать права доступа не только для репозиториев, но и для веток или имён меток внутри каждого репозитория. То есть, вы можете указать, что определённые люди (или группы людей) могут отправлять (push) определённые "ссылки" (ветки или метки), а остальные нет. В Gitolite доступ осуществляется по ssh.

Термины:

Четыре способа установки Gitolite:

  1. package method - установка из пакетов
  2. root method - вы должны быть root на сервере и нужно развернуть несколько Gitolite- серверов (не репозиториев, а именно серверов)
  3. non-root method - установка одного Gitolite- сервера, не требует root
  4. from-client - аналогичен предыдущему методу, единсвенное все команды выполняются удаленно с админ-клиентского хоста

Введение Git и Gitolite

Gitolite работает поверх SSH с использованием аутентификации через public-key (точнее, это наиболее популярная конфигурация). На сервере заводится единственный реальный пользователь, через которого будет происходить работа с репозиториями. А «магия» gitolite заключается в том, что в authorized_keys эти ключики попадают с опцией «command=[path]/gl-auth-command …». Эта опция предписывает ssh- серверу запускать указанную команду независимо от того, что реально хотел исполнить пользователь. При этом оригинальная команда сохраняется в переменной SSH_ORIGINAL_COMMAND, которую и считывает gitolite, чтобы узнать, что от него хотели.

Вы не должны устанавливать ключи на сервер вручную (через ssh-copy-id). Всё надо делать через gitolite-admin/keydir и gitolite-admin/conf/gitolite.conf. В первую папку кладёте публичный ключ, в gitolite.conf прописываете имя пользователя, совпадающее с именем ключа до .pub Дело в том, что gitolite не просто добавляет ключи в .ssh/authorized_keys, а записывает там команду, по которой потом и происходит авторизация в gitolite. Выглядит это в authorized_keys так
command="/usr/local/bin/gl-auth-command username",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa дальше пошел ключ

Инсталляция Gitolite в Debian

Управление Gitolite

$ ssh git@server.example.org info
hello user, this is gitolite 2.3-1 (Debian) running on git 1.7.10.4
the gitolite config gives you the following access:
     R   W 	gitolite-admin
    @R  @W 	test777
    @R_ @W_	testing