Если нужен git-server для небольшой компании разработчиков или вообще "для маленькой такой компании", то вполне можно настроить его как описано здесь. Однако, такой сервер будет предоставлять всем равные права на чтение и запись. Так что, если необходимо как-то ограничивать доступ к репозитарию, например, давать права только на чтение, то, возможно, имеет смысл посмотреть на gitolite.
Документацию по gitolite можно найти здесь, а я просто приведу свою чуть модифицированную шпаргалку. С момента написания первой версии поста, многое изменилось. Например, dsa формат признан устаревшим для ключей и рекомендуется использовать rsa или ed25519. Так же появился gitolite3, который так же рекомендован вместо gitolite. Статья исправлена в соотвествии с этими и другими изменениями.Итак предположим у нас есть ssh доступ на машину, где мы хотим поднять git server (<user> и <server>). Так же у нас есть наша машина с которой мы будем администрировать gitolite (<admin>) и на ней установлен git. Все машины под управлением Ubuntu.
Для начала нам потребуются ключи. Если их нет, то сгенерируем их:
<admin>$ssh-keygen -t ed25519
Начнем установку gitolite(вариант для Ubuntu и Debian):
<server>$ sudo apt install gitolite3
В процессе установки gitolite3 запросит у нас либо файл с публичным ключом, либо его содержимое - я просто скопировал содержимое.
Далее возвращаемся на <admin>:
<admin>$ git clone gitolite3@<server>:gitolite-admin
<admin>$ cd gitolite-admin
<admin>$ vim conf/gitolite.conf
Например, можно написать следующий "конфиг":
@videosite_staff = admin ns
repo gitolite-admin
RW+ = admin
repo testing
RW+ = @all
repo videosite
RW+ = @videosite_staff
Т.е. в нем объявлено, что к репозиторию gitolite-admin имеет доступ только пользователь admin, к testing - все, а к videosite - только группа @videosite_staff, к которой на данный момент относятся admin и ns. Права могут быть:
- R - только чтение
- RW - чтение добавление коммитов, запрещен rewind (push --force)
- RW+ - полный доступ
- RWC - возможность создавать ветку
- RWD - возможность удалять ветку
- - запретить запись
<admin>$ git add keydir/ns.pub
<admin>$ git commit -am "video site repository is added"
<admin>$ git push origin master
Мы немного здесь оптимизировали настройку - одновременно положили конфигурацию доступа и добавили пользователя.
Все что нам осталось - это начать работать. gitolite обнаружил, что даны permissions на новый проект и создал его. Так что становимся пользователем ns, клонируем репозиторий и вперед:
<ns_host>$ git clone git@<server>:videosite.git
<
ns_host
> cd videosite
...
No comments:
Post a Comment