Создание сервера для git репозитариев, gitolite

Установка:
  • создаем пользователя git
  • переходим под этого пользователя и выполняем начальные действия
    su git
    cd ~
    git clone git://github.com/sitaramc/gitolite
    gitolite/install -ln   
    gitolite setup -pk /path/to/YourName.pub
  •  YourName.pub необходимо имя файла указать правильно, так как в дальнейшем это имя является именем пользователя
  • Из-под пользователя, публичный ключ которого был добавлен в gitolite при его установке (или любого другого пользователя, обладающего достаточными правами на репозиторий gitolite-admin) исполняем:
    git clone git@server:gitolite-admin
    

    Это, соответственно, создаст в текущей папке копию админ-репозитория. Он представляет собой две папки: conf и keydir.
    В папке conf хранится файл gitolite.conf, содержащий список репозиториев и прав доступа к ним. В папке keydir — публичные ключи пользователей, про которых должен знать gitolite.
  • Чтобы добавить нового пользователя просто записываем его публичный ключ в папку keydir. Имя ключа до окончания .pub будет являться именем пользователя в системе gitolite. Примеры: user1.pub или john-smith.pub. В имени допустимы символы точки и подчеркивания.
  • Чтобы добавить репозиторий и изменить права редактируем файл conf/gitolite.conf. Исходно он выглядит так:
    repo    gitolite-admin
            RW+     =   gitadmin
    
    repo    testing
            RW+     =   @all
    

    Добавим строчки:
    repo    megaproject
            RW+     =   gitadmin user1 john-smith
    

    Эти строчки описывают новый репозиторий megaproject, права на который имеют пользователи
  • Из-под пользователя, публичный ключ которого был добавлен в gitolite при его установке (или любого другого пользователя, обладающего достаточными правами на репозиторий gitolite-admin) исполняем:
    git clone git@server:gitolite-admin
    

    Это, соответственно, создаст в текущей папке копию админ-репозитория. Он представляет собой две папки: conf и keydir. В папке conf хранится файл gitolite.conf, содержащий список репозиториев и прав доступа к ним. В папке keydir — публичные ключи пользователей, про которых должен знать gitolite.
  • Чтобы добавить нового пользователя просто записываем его публичный ключ в папку keydir. Имя ключа до окончания .pub будет являться именем пользователя в системе gitolite. Примеры: user1.pub или john-smith.pub. В имени допустимы символы точки и подчеркивания.
  • Чтобы добавить репозиторий и изменить права редактируем файл conf/gitolite.conf. Исходно он выглядит так:
    repo    gitolite-admin
            RW+     =   gitadmin
    
    repo    testing
            RW+     =   @all
    

    Добавим строчки:
    repo    megaproject
            RW+     =   gitadmin user1 john-smith
    

    Эти строчки описывают новый репозиторий megaproject, права на который имеют пользователи gitadmin, user1, john-smith.
  • После чего применяем и отправляем все изменения:
    git add .
    git commit -a -m "New repo and users added"
    git push
    

  • После чего применяем и отправляем все изменения:
    git add .
    git commit -a -m "New repo and users added"
    git push
    
  •  
Несколько слов о формате конфиг-файла:
  • Существует возможность использовать группы. Причем как для пользователей, так и для репозиториев. Пример:
    @oss_repos  =   gitolite linux git perl rakudo entrans vkc
    @staff      =   sitaram some_dev another-dev
    

    @all — особая, предопределенная группа. Она описывает — в зависимости от контекста — всех аутентифицированных пользователей, или все репозитории.
  • Базовые права доступа описываются следующим образом:
    • R — позволяет чтение
    • RW — позволяет делать push в существующий ref или создавать новый ref
    • RW+ — позволяет делать «push -f» или удалять ref (т.е. уничтожать информацию)
    • -(минус) — запрещает доступ
     



Сделано по образу и подобию