Документация по ОС FreeBSD Четверг, 09.05.2024, 02:44
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Мои статьи [0]
Установка и настройка [281]
X Window [25]
Man pages [30]
Ports & Packages [26]
cvs [18]
Multimedia [20]
Нововсти в мире Unix [0]
RFC [4]
RFC (Request for Comments, Запрос на комментарии) - серия документов, публикуемая сообществом исследователей и разработчиков, руководствующихся практическими интересами, в которой описывается набор протоколов и обобщается опыт функционирования Интернет.
Безопасность [52]
Работа с железом [58]
Книги по FreeBSD [17]
Сеть [505]
Программирование [40]
FireWall [58]
Темы экзамена BSDA [14]
Официальные темы экзамена BSDA, включая подробноые описания и советы по обучению.

Главная » Статьи » Установка и настройка

Настройка git+gitosis [2011]
Возникла необходимость поставить систему контроля версий, для отслеживания работы программистов.
О преимуществах контроля версий говорить думаю не стоит.
Разобьем на 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
#su 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/
Категория: Установка и настройка | Добавил: oleg (01.10.2011) | Автор: manefesto
Просмотров: 1567 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024