Gitolite— это средство для создания централизованных репозиториев для совместной разработки через Git.
Gitolite позволяет легко и безопасно размещать репозитории Git, указать права доступа не только для репозиториев, но и для веток или имён меток внутри каждого репозитория. То есть, вы можете указать, что определённые люди (или группы людей) могут отправлять (push) определённые "ссылки" (ветки или метки), а остальные нет. В Gitolite доступ осуществляется по ssh.
Термины:
Четыре способа установки Gitolite:
Gitolite работает поверх SSH с использованием аутентификации через public-key (точнее, это наиболее популярная конфигурация). На сервере заводится единственный реальный пользователь, через которого будет происходить работа с репозиториями. А «магия» gitolite заключается в том, что в authorized_keys эти ключики попадают с опцией «command=[path]/gl-auth-command …». Эта опция предписывает ssh- серверу запускать указанную команду независимо от того, что реально хотел исполнить пользователь. При этом оригинальная команда сохраняется в переменной SSH_ORIGINAL_COMMAND, которую и считывает gitolite, чтобы узнать, что от него хотели.
command="/usr/local/bin/gl-auth-command username",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa дальше пошел ключ
# aptitude install git gitolite
# useradd -d /home/gitserver/ -m -c 'git version control' git # passwd git
# /usr/sbin/useradd gitadmin # passwd gitadmin
$ ssh-keygen -t rsa -C "gitadmin777@gmail.com" [user@client ~]$ scp ~/.ssh/id_rsa.pub user@server.example.org:/tmp/user.pub
После копирования публичного ключа, авторизация пользователя git с админского хоста должна происходить без запроса пароля на сервере.
# sudo -u git -i $ gl-setup /tmp/user.pub
[user@client ~]$ git clone gitolite@server.example.org:gitolite-admin $ cd gitolite-admin $ nano conf/gitolite.conf repo gitolite-admin RW+ = user repo testing RW+ = @all repo test777 RW+ = user RW+ = @all $ git add . $ git commit -am 'Added repo Test777' $ git push origin master
$ 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