Установка Git SCM на Gentoo Linux
Git - распределённая система управления версиями
Установка Git
Установка флагов
/etc/portage/package.use
dev-vcs/git cgi highlight #dev-lang/lua -deprecated #app-crypt/gnupg -smartcard
- cgi - поддержка web интерфейса
- highlight - раскраска в интерфейсе
Установка:
emerge dev-vcs/git -av
Настройка
Добавим пользователя git, под которым будет запущен git-daemon
useradd git -mU -s /bin/bash id git chmod 750 /home/git
Репозитории
Инициализация репозитория test.git
su - git git init --bare test.git touch ~/test.git/git-daemon-export-ok
На сервере создаем «чистый» --bare репозиторий.
Суффикс .git в имени папки репозитория - это просто соглашение об именах, которое обычно означает, что папка расположена на сервере, а не у клиента.
Наличие файла git-daemon-export-ok разрешает git-daemon экспортировать репозиторий, иначе ошибка:
git-daemon[4419]: '/home/git/test.git/': repository not exported.
Так же можно указать опцию демона --export-all, тогда по-умолчанию все репозитории будут доступны
Настройки демона
/etc/conf.d/git-daemon
GITDAEMON_OPTS="--syslog --enable=receive-pack --base-path=/home/git" GIT_USER="git" GIT_GROUP="git"
Для загрузки данных на удаленный сервер используются процессы send-pack и receive-pack. Процесс send-pack запускается на стороне клиента и подключается к receive-pack на стороне сервера.
Git-изнутри-Протоколы-передачи
Т.е. без --enable=receive-pack работает как read only.
Запуск
/etc/init.d/git-daemon start
Для работы по git протоколу, необходимо открыть порт 9418
Проверка демона
Выполняем действия на стороне клиента
git config --global user.email "you@example.com" git config --global user.name "Your Name" cd /tmp git clone git://domain.ru/test.git cd test # До #git status #git remote -v #git remote show origin #git branch touch README.md git add README.md git commit -m 'initial commit' git push origin master # После #git status #git remote -v #git remote show origin #git branch
Настройка SSH
Для доступа по SSH добавляем ключ(и)
su - git mkdir -p ~/.ssh chmod 750 ~/.ssh touch ~/.ssh/authorized_keys chmod 640 ~/.ssh/authorized_keys echo 'ssh-rsa AAAA<PUBLIC KEY>' >> ~/.ssh/authorized_keys
git clone ssh://git@domain.ru:/home/git/test.git
Обсуждение
origin — это имя по умолчанию, которое Git присваивает серверу, с которого вы склонировали репозиторий