Потребовалось организовать свой git-сервер с простым распределением прав доступа и управлением.
Выбор пал на gitolite, как наиболее популярного и, как оказалось, вполне удобного.
В общем, погнали ставить:

На сервере:
устанавливаем сам git

sudo apt-get install git

Добавляем пользователя git, через которого будет работать gitolite и установим ему пароль

sudo useradd -d /home/git/ -m git
sudo passwd git

Теперь нам надо добавить git юзверя к доверенным у ssh и скажем, где искать файлы авторизации, правим /etc/ssh/sshd_config  добавляем к ВНИМАНИЕ! Если у вас вообще нет AllowUsers то добавлять её не нужно.

AllowUsers git
AuthorizedKeysFile %h/.ssh/authorized_keys

У Админа:

Генерируем свой ssh-rsa ключ и добавляем к себе же (если до этого не генерировали и не пользовались им) :

ssh-keygen
ssh-add

копируем свой публичный ключ публичный ключ обычно лежит тут: ~/.ssh/id_rsa.pub в папку к нашему пользователю git на сервер /home/git/USERNAME.pub USERNAME — ваш логин, под которым вас будет знать Гитолайт (не обязательно как ваш системный логин) у меня это admin.pub

По быстроляну скопировать на сервер можно так:

scp ~/.ssh/id_rsa.pub user@host:/home/git/admin.pub

где user и host замените на свой для доступа по ssh к серверу

На сервере:
устанавливаем Gitolite

su - git
mkdir -p ~/bin
git clone git://github.com/sitaramc/gitolite
gitolite/install -ln ~/bin
./bin/gitolite setup -pk admin.pub
exit

установка завершена, теперь настройка.

У Админа:
все настройки осуществляются через репозиторий gitolite-admin, для этого его необходимо сначала склонировать его с сервера

cd ~
git clone ssh://git@server/gitolite-admin
cd gitolite-admin

теперь в папке gitolite-admin в ней папка conf а в ней gitolite.conf — настройки репозиториев и прав доступа добавим по аналогии свой репозиторий: repo testrep и установим права на чтение/запись пользователям admin (как и имя публичного ключа) RW+= admin в папке keydir хранятся публичные ключи пользователей в формате username.pub например pavelk.pub (см далее для добавления)применение настроек происходит обычным образом через git в каталоге, в котором что-либо меняли:

git add .
git commit -a -m "комментарии изменений"
git push

Настройки впринципе закончены.

С клиента-разработчика

теперь для доступа к репозиторию нам необходимо поделиться с сервером своим публичным ssh ключом
для этого генерируем его у себя и сразу добавляем к себе же:
ssh-keygen
ssh-add

Теперь нужно дать знать gitolite, что у нас новый пользователя,
это по идее делает админ сервера — берёт ваш ключ и копирует в каталог keydir

На админе обновляем настройки как уже делали выше.

cd /gitolite-admin
git add .
git commit -a -m "new user added"
git push

теперь на клиенте можем обычным образом склонировать наш репозиторий:

git clone git@server:testrep

Надеюсь, всё прошло гладко =)

Для винды:

Установим сам git git для винды

ssh ключ можно сгенерировать с помощью PUTTYgen, сохранив (conversions->export OpenSSH key) приватный (с названием «id_rsa») ключ в директории «.ssh» текущего клиента (/users/username/.ssh/ — windows 7).

Публичный ключ находится в окне «key» — его нужно скопировать и передать на сервер в каталог keydir (не забудьте выставить права на репозитории в gitolite.conf и закоммитить изменения).

Небольшой пример использования своего сервера с git:
Допустим у вас есть некий проект в папке ~/testrep
создаём локальный репозиторий:

cd ~/testrep
git init
git add .
git commit -m "коммент"

добавим наш сервер как внешний:

git remote add origin git@host:testrep

origin — просто заголовок для этого сервера testrep — имя проекта, которое задавали в conf так как проект не содержит ничего, зададим явно ветку:

git push --set-upstream origin master

origin — имя сервера из предыдущей команды master — имя ветки ну и выгружаем на сервер:

git push

На этом всё =)

Leave a Comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

You may also like