Знакомство с gitolite | ||
Программирование > GIT gitolite — это средство для создания централизованных репозиториев для совместной разработки через git.
Зачем оно нужно? Родные средства git для этой задачи на сегодня явно недостаточны: родной git-протокол не содержит каких-либо средств авторизации, а для работы через ssh потребуется завести полноценного юзера в ОС (с шеллом), что далеко не всегда уместно и желательно. gitolite же позволит вам заводить пользователей независимо от наличия аккаунта в ОС и гибко раздавать права. gitolite — это средство для создания централизованных репозиториев для совместной разработки через git. Зачем оно нужно? Родные средства git для этой задачи на сегодня явно недостаточны: родной git-протокол не содержит каких-либо средств авторизации, а для работы через ssh потребуется завести полноценного юзера в ОС (с шеллом), что далеко не всегда уместно и желательно. gitolite же позволит вам заводить пользователей независимо от наличия аккаунта в ОС и гибко раздавать права. Пресуппозиции
Установка На самом деле в большинстве случаев установка не вызывает каких-либо вопросов. На сервере:
Настройка Особенность настройки gitolite заключается в том, что почти никакие операции по его настройке НЕ производятся напрямую на сервере. Чтобы добавить нового пользователя, репозиторий или изменить права доступа надо сделать git clone специального gitolite-admin репозитория, внести изменения и сделать git push. Дело в том, что gitolite использует целую систему хуков, чтобы эти изменения вступили в силу. Итак, чтобы создать новый репозиторий и добавить нужных пользователей потребуется:
Работаем с вновь созданным репозиторием Собственно, работа с gitolite с точки зрения пользователя совершенно традиционна. Следуя нашему примеру, разработчик может исполнить команды: git clone git@server:megaproject
cd megaproject
touch newfile
git add .
git commit -a -m "newfile"
git push git@server:megaproject master
ssh — аутентификация через публичный ключ Как вы, возможно, знаете, в ssh помимо традиционной аутентификации по паролю существует возможность пройти оную с использованием пары ключей. Аутентификация через публичный ключ — это когда вы генерируете пару ключей и отдаете публичный ключ на тот хост, который должен вас узнавать. После этого через ssh можно входить на удаленную машину не вводя пароль. Чтобы сгенерировать пару ключей для своего пользователя исполните ssh-keygen -t rsa Эта команда создаст в папке ~/.ssh два файла: id_rsa и id_rsa.pub. Первый — это частный ключ, который следует хранить как зеницу ока, а второй (с расширением .pub) — это публичный ключ, который и нужно передавать на удаленный хост. На самом деле внутри этого файла просто одна длинная текстовая строка, которую можно передать просто как текст. А на машине, доступ к которой требуется предоставить, необходимо внести указанный ключ в файлик ~/.ssh/authorized_keys того пользователя, доступ под которым необходимо организовать. gitolite — принцип работы Это для тех, кому интересно, как оно вообще устроено. Собственно, как уже понятно из описания, gitolite работает поверх ssh с использованием аутентификации через public-key (точнее, это наиболее популярная конфигурация). На сервере заводится единственный реальный пользователь, через которого будет происходить работа с репозиториями. А «магия» gitolite заключается в том, что в authorized_keys эти ключики попадают с опцией «command=[path]/gl-auth-command ...». Эта опция предписывает ssh-серверу запускать указанную команду независимо от того, что реально хотел исполнить юзер. При этом оригинальная команда сохраняется в переменной SSH_ORIGINAL_COMMAND, которую и считывает gitolite, чтобы узнать, что от него хотели. Источник: http://habrahabr.ru/blogs/Git/136815/ |
||
Комментарии | ||