Потребовалось организовать свой 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
На этом всё =)