Переустановка системы на домашнем сервере подтолкнула написать еще одну подробную инструкцию по настройке git-репозитория на Mac OS X 10.6 (Snow Leopard)
Установка и настройка gitosis
Предположим, что git-клиент уже установлен. В интернете можно с легкостью найти несколько готовых сборок. Он нам понадобится, чтобы загрузить gitosis
cd ~/Desktop
mkdir src
git clone git://eagain.net/gitosis.git
cd gitosis
sudo python setup.py install
Создадим пользователя, под которым мы будем подключаться к репозиторию. Это можно сделать из панели управления пользователями или из командной строки
Найдем не используемые uid и gui
sudo dscl . list /Users uid
sudo dscl . list groups gid
Предположим, что число 410 не используется в обоих случаях. Это будет нашим идентификатором.
Создаем группу git
sudo dscl . create groups/git
sudo dscl . create groups/git gid 410
Создаем пользователя git
sudo dscl . create users/git
sudo dscl . create users/git uid 410
sudo dscl . create users/git NFSHomeDirectory /Users/git
sudo dscl . create users/git gid 410
sudo dscl . create users/git UserShell /bin/bash
sudo dscl . create users/git Password '*'
Создаем домашнюю директорию пользователя
sudo mkdir /Users/git
sudo chown git /Users/git
sudo chgrp git /Users/git
Теперь для текущего пользователя на локальном компьютере сгенерируем ssh ключ, если его еще нет. Если ключ есть, то этот шаг пропускаем
ssh-keygen -t rsa
И копируем его на удаленный сервер
scp ~/.ssh/id_rsa.pub repo.local:/tmp/my_key.pub
Если же репозиторий создается на рабочем компьютере, то эта команда немного упрощается
cp ~/.ssh/id_rsa.pub /tmp/my_key.pub
Теперь на сервере выполним инициализацию репозитория
cd /Users/git
sudo -H -u git gitosis-init < /tmp/my_key.pub
При удачном раскладе вы должны увидеть сообщения вроде этих
Initialized empty Git repository in /Users/git/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /Users/git/repositories/gitosis-admin.git/
Устанавливаем переменную PATH для пользователя git
sudo su git
echo "export PATH=$PATH" > ~/.bashrc
exit
На этом настройку gitosis можно считать законченной. Проверим подключение к репозиторию из вне.
git clone git@repo.local:gitosis-admin.git
Если вы увидите сообщение
Cloning into gitosis-admin...
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 5 (delta 0), reused 5 (delta 0)
Receiving objects: 100% (5/5), done.
то значит все сделано правильно и можно переходить к конфигурации проектов и прав доступа к ним для разных пользователей.
Потенциальные проблемы
Когда я настраивал gitosis в первый раз, то долго бился над тем, что подключение по SSH для пользователя git ни как не устанавливалось. Причина этому, как выяснилось позже, послужило ограничение доступа по SSH только администраторам.
Я разрешил всем пользователям подключаться по SSH, так как в моем случае других пользователей больше нет. Возможно, даже в такой ситуации было бы корректнее указать явно группы и пользователей, которым разрешен доступ.
Коментарии к заметке
http://designnotfound.ru/deploy-from-private-repo/
[…] для рабочих проектов, отказавшись от плясок с gitosis. При выкладке одного из них произошло […]