Возникла необходимость поставить систему контроля версий, для отслеживания работы программистов. О преимуществах контроля версий говорить думаю не стоит. Разобьем на 2 этапа, один настройка серверной части, а второй работа с клиентскойЭтап 1. Собственно говоря сама установка#make -C /usr/ports/devel/git install clean
У меня собрано со следующими опциями
===> The following configuration options are available for git-1 .7 .6 .1 :
GUI=off "Enable building of GUI tools"
SVN=on "Enable required dependencies for SVN tools"
SVN_FBSD=off "Use subversion-freebsd dependency (implies SVN)"
GITWEB=on "Install gitweb"
CONTRIB=off "Install contributed scripts"
P4=on "Enable Perforce support"
CVS=on "Enable CVS support"
HTMLDOCS=off "Install additional documentation"
PERL=on "Build perl based git tools"
ICONV=on "Support for multiple character encodings"
CURL=on "Support HTTP push and pull"
ETCSHELLS=on "Modify /etc/shells"
===> Use 'make config' to modify these settings
Ставим gitosis
#make -C /usr/ports/devel/py-gitosis install clean
Создадим пользователя под которым будет работать git через sysinstall Заходим теперь под пользователем git
Генерим ключ и добавляем его через gitosis-init, это нужно для работы на клиентском машине по ключам ssh
git>ssh-keygen
git>gitosis-init < .ssh/id_rsa.pub
В принципе на этом предварительная настройка закончилась По умолчанию создается один репозиторий gitosis-admin через который мы собственно говоря и будем админить git симлинк на его конфиг лежить в хомяке
git>cat .gitosis.conf
[gitosis]
loglevel = DEBUG
[group gitosis-admin]
writable = gitosis-admin
members = git@youserv
writable это собственно говоря название репозитория, у клиента он будет отображаться как <reponame>.git group никакого смысла не несет,просто название группы Поправим rc.conf
#echo 'git_daemon_enable="YES"' >> /etc/rc.conf
#echo 'git_daemon_flags="--syslog --base-path=/home/git/repositories \
--export-all --detach"' >> /etc/rc.conf;
Вот теперь на стороне сервера все законченоЭтап 2. На клиенте я использую тоже *nix. Поэтому буду обьяснять как все делать из консоли Прописываем приватный ключ пользователя гит
cat .ssh/config Host youserv User git IdentityFile ~/.ssh/git_id_rsa
Забираем репозиторий с сервера
mkdir git
cd git
git clone ssh://git@youserv/gitosis-admin.git
Это тот самый репозиторий, которые является по сути админской частью Создадим теперь несколько репозиториев на сервер и добавим парочку пользователей
username>cd gitosis-admin
username>cat gisosis.conf
[gitosis]
loglevel = DEBUG
[group gitosis-admin]
writable = gitosis-admin
members = git@youserv
[group test]
writable = test
members = git@youserv test@youserv
username>cp ~/keys/test_id_rsa.pub keydir/test@youserv.pub
username>git add .
username>git commit -a -m 'create new repo and add key'
username>git push
Все, теперь у нас на сервере создан еще один репозиторий с которым можно работать. Немного расскажу про формат адреса для работы с git В нашем случае это ssh://git@youserv/reponame.git, git@ это тот пользователь под которым запущен сервис git, если бы запустили под gitserv то соотвественно было бы такssh://gitserv@youserv/reponame.git, это было моей первой ошибкой над которой я бился Пожалением программистов было чтобы измения вносимые в репозиторий сразу же появлялись на сервере, то есть обьясняю, имеет сайт, который все время дописывают, чтобы забрать данные поступившие в репозиторий и выложить их в /usr/local/www/<youdomain> приходилось выполнять вручную манипуляции
>cd /usr/local/www/<youdomain>
>git pull
>git merge origin/master
это не совсем удобно Поэтому можно использовать так называемые хуки они лежат в ~/reposutories/<reponame>.git/hooks Вот пример реализации выкладывания в livе сразу же после внесния измений
> cat /home/git/repositories/<reponame>.git/hooks/post-update
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
unset GIT_DIR
cd /usr/local/www/<youdomain>
git pull
git merge origin/master
exec git update-server-info
без unset GIT_DIR не работало Всем удачи, жду критики PS:По большей части копирайт+свой опыт URL:http://meandubuntu.ru/2009/12/ http://habrahabr.ru/blogs/Git/127213/
Источник: http://www.lissyara.su/articles/freebsd/programms/git_gitosis_ssh/