Skip to content

14 Июль 2012

152

Ubuntu Linux + git server gitolite

gitolite

Про подъем собственного репозитория git, я уже рассказывал (пруфлинк). Однако проект gitosis заброшен, и в новых дестрибутивах Убунты его уже нет вообще. Поэтому проходится переходить на gitolite. Про установку и настройку сервера gitolite и пойдет речь под катом.

Пост про установку и настройку gitosis

:!:  Дано:

  • Ubuntu 12.04 LTS minimal
  • Рабочая машина под Windows

:!:  Поехали:

  1. apt-get install gitolite
  2. useradd -m -r -s/bin/sh git
  3. Создаем на рабочей машине публичный RSA ключ. С помошью msysgit, например. Или cygwin и ssh-keygen -t rsa. Способов много.
  4. Переносим публичный RSA ключ с рабочей машины (в Windows путь до ключа примерно такой: ../Users/username/.ssh/id_rsa.pub) на серверную машину, кладем в папку /home/git.
  5. sudo -H -u git gl-setup /home/git/id_rsa.pub
  6. Откроется редактор vim, предлагающий изменить настройки giolite. Мы менять из не будем, вводим :x для выхода из редактора.

Теперь должен быть создан администраторский репозиторий, через который и будет управляться сервер гит. Репозиторий доступен по адресу git@domen:gitolite-admin.git и примет только пользователя, чьим ключом был инициализирован. Давайте склонируем его на нашу рабочую машину

:!:  Настройка:

  1. В папку keydir добавляются ключи пользователей. Имя файла должно соответствовать имени пользователя в конфигурационном файле.
  2. В папке conf лежит конфигурационный файл. Промер конфигурационного файла:]
    @developers = user1_rsa user2_rsa user3_rsa
    
    repo myreponame
         RW+    refs/tags = maindeveloper
         -      refs/tags = @developers
         RW       master$ = @developers
         RW+              = @developers

    Разберемся что все это значит. Во-первых можно создавать группы пользователей. Тут создана группа developers. Имена пользователей должны соответствовать именам их rsa ключей. Права могут быть следующих типов:

    • R - только чтение
    • RW - чтение и запись, но запрещен force push (перезапись)
    • RW+ - полный доступ
    • RWC - права на создание новых веток
    • RWD - права на удаление веток
    • - запрет на запись

    Применяться права могут не только к репозиторию в целом, но и конкретно к

    • определенным веткам — branch$
    • к управлению тегами - ref/tags
    • к конкретным файлам - NAME/filename

    Таким образом в нашем примере создавать метки (tags) может только главный разработчик. Группа пользователей @developers имеет полный доступ в репо, за исключением редакирования меток и перезаписи ветки master.

  3. Для применения настроек делаем push в админский репо
    git add . --all
    git commit -a -m "Configuration"
    git push
  4. После настройки, новосозданные репозитории нужно создать локально и сделать push в еще пока не существующий, новый репо, для его инициализации. Адреса репозиториев аналогичны админскому. Например: git@domen:repo1.git
152 коммент.
  1. xternalx
    4 Ноя 2012

    Привет! Спасибо за туториал!

    Добавьте заметку о том,что при добавлении новых пользователей необходимо делать git add . —all, чтобы новые ключи попали в гитолайт. Я пол дня убил, пока случайно не обнаружил, что новые ключи просто не добавлены в gitolite-admin :]]

    • Sharm
      23 Дек 2012

      Спасибо, исправил =)

Обсуждение закрыто.