RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Возникла необходимость поставить систему контроля версий, для отслеживания работы программистов. О преимуществах контроля версий говорить думаю не стоит. Разобьем на 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
writable это собственно говоря название репозитория, у клиента он будет отображаться как <reponame>.git group никакого смысла не несет,просто название группы Поправим rc.conf
На клиенте я использую тоже *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> приходилось выполнять вручную манипуляции
это не совсем удобно Поэтому можно использовать так называемые хуки они лежат в ~/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 не работало Всем удачи, жду критики