|
|
www.lissyara.su
—> статьи
—> FreeBSD
—> программы
—> Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
Автор: manefesto.
Возникла необходимость поставить систему контроля версий, для отслеживания работы программистов.
О преимуществах контроля версий говорить думаю не стоит.
Разобьем на 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://habrahabr.ru/blogs/Git/127213/
Ссылка на обсуждение: http://forum.lissyara.su/viewtopic.php?f=14&t=34120.
размещено: 2011-09-14,
последнее обновление: 2011-10-24,
автор: manefesto
|
|
|
|
2014-07-27, lissyara
gmirror
Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9
Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту
Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis
Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
2011-08-14, zentarim
Wi-FI роутер + DHCP + DNS
Настройка Wi-Fi роутера на Freebsd 8 + DNS сервер + DHCP сервер: чтобы Wi-Fi клиенты были в одной подсети с проводными, проводные и беспроводные клиенты получали адреса автоматически по DHCP, кэширующ
2011-06-15, -ZG-
Охранная система на FreeBSD+LPT
В этой статье описана попытка реализации простой охранной системы на базе FreeBSD с подключением к ней охранных устройтсв на LPT порт и видеорегистрацией.
2011-03-13, terminus
ng_nat
Описание работы ng_nat, практическое использование, достоинства и недостатки в сравнении с ipfw nat
2011-02-20, Капитан
Nagios+Digitemp
Статья описывает создание системы оповещения о превышении температуры в специальных помещениях на основе Nagios с использованием программы Digitemp.
2011-02-17, Le1
Zyxel Configuration
Скрипт для массового изменения конфига свичей Zyxel. Берет из файла iplist список ip-шек, заходит последовательно на каждый и выполняет комманды из файла commands, записывая происходящее в лог файл.
2011-02-16, fox
hast carp zfs ucarp cluster
HAST (Highly Available Storage), CARP, UCARP, ZFS, Cluster настройка и одаптация плюс личные размышления…
2011-02-04, BlackCat
Восстановление ZFS
История о том, как был восстановлен развалившийся RAIDZ ZFS-пул (перешедший в FAULTED) с помощью скотча и подручных средств. Или о том, какие приключения ожидают тех, кто не делает резервных копий.
2011-02-03, Капитан
1-Wire
Статья описывает самостоятельное изготовление контроллера DS9097 для съёма показаний с датчиков температуры DS1820 с помощью программы Digitemp.
2011-01-28, Капитан
Температура в серверной
Статья описывает построение системы наблюдения за температурой в помещении серверной с использованием программы Digitemp и выводом графиков в MRTG
2011-01-21, m4rkell
Syslog server
Как то буквально на днях, у нас завалилось, что то в еве) или не в еве не суть. Суть в том, что когда захотели снять логи с хостов esx обнаружили, что хранят эти негодяи логии только за последнии сутк
2011-01-07, lissyara
Canon/gphotofs
Монтирование цифровых фотоаппаратов Canon (PTP) как файловой системы, автоматизация этого процесса через события devd и внешние скрипты.
|
Статистика сайта
|
Сейчас на сайте находится: 32 чел.
|
За последние 30 мин было: 127 человек
|
За сегодня было 13424 показов, 855 уникальных IP
|
|
|
|
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
|
|
|
Комментарии пользователей [4 шт.]