Наравне с традиционными возможностями систем контроля версий, Mercurial так же поддерживает функции для децентрализованной работы:
- отсутствует понятие основного хранилища кода
- ветвление (возможно вести несколько веток одного проекта и копировать изменения между ветками)
- слияние репозиториев (чем и достигается «распределённость» работы).
Установка и настройка mercurial
Установка mercurial
Установка mercurial очень проста:$ sudo aptitude install mercurial
Настройка mercurial
Далее, необходимо создать пользователя для mercurial и директории, где будут располагаться репозитории mercurial и виртуальный хост (последний необходим для настройки apache, см. далее):# добавляем нового пользователя
$ sudo useradd hg
$ sudo mkdir /home/hg
$ sudo chown hg:hg /home/hg
# создаем директорим для репозиториев и для виртуального хоста
$ sudo -u hg mkdir /home/hg/repos /home/hg/www
Создание репозитория mercurial
После того, как пользователь создан, необходимо создать репозиторий, в котором будут храниться исходные коды:Попробуем что-нибудь сохранить в репозитории:# От имени пользователя hg создаем (hg init) репозиторий $ sudo -u hg hg init /home/hg/rep
os
/Debian.World.Ru
Последняя строчка выглядит странновато, но волноваться не очем. Все изменения будут сохранены, а последняя строчка говорит лишь о том, что вместо имени ползователя будет использована строка "hg@debian-world.ru", то есть "логин@машина". Чтобы эта строка более не мозолила глаз, необходимо лишь сделать следующее:$ sudo su - hg $ cd /home/hg/rep
os
/Debian.World.Ru/ # создаем файл $ echo "test mercurial cvs" > read.me # убеждаемся, что mercurial "видит" новый файл $ hg status ? read.me # добавляем файл в репозиторий $ hg add adding read.me # убеждаемся, что добавление файла выполнено $ hg status A read.me # коммитим изменения $ hg ci -m "init revision" No username found, using 'hg@debian-world.ru' instead
$ echo "[ui]" > ~/.hgrc
$ echo "username = Debian.World.Ru Admin <debian.world.ru@gmail.com>" >> ~/.hgrc
Таким образом, mercurial будет "знать", кем подписываться при сохранении изменений. Установка и настройка Apache, mod_wsgi
После того, как репозиторий создан, необходимо предоставить http-доступ к нему.Установка Apache, mod_wsgi
Для этого необходимо установить http-сервер, например, Apache, а так же модуль для работы с python (в данном случае - mod_wsgi):$ sudo aptitude install apache2 libapache2-mod-wsgi
Настройка Apache
Далее, необходимо создать виртуальный хост:$ sudo touch /etc/apache2/sites-available/mercurial
Выглядеть он должен приблизительно следующим образом:
ServerAdmin debian.world.ru@gmail.com
ServerName hg.debianworld.ru
DocumentRoot /home/hg/www/
# настройки wsgi
WSGIProcessGroup hg
WSGIDaemonProcess hg user=hg group=hg threads=2 maximum-requests=1000
# путь до скрипта, обрабатывающий wsgi
WSGIScriptAlias / /home/hg/rep/hgwebdir.wsgi
# ограничение доступа к репозиторию
AuthType Basic
AuthName "Restricted Files"
AuthUserFile /home/hg/.hg.htpasswd
Require valid-user
Настройка mod_wsgi
После того, как создан виртуальных хост, необходимо создать скрипт wsgi, а так же файл пользователей, которым будет доступен репозиторий. Скрипт для wsgi можно располагать в любом месте, например, недалеко от репозитория:Выглядеть он должен следующий образом:$ sudo -u hg vim /home/hg/rep
os
/hgwebdir.wsgi
#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
os.environ['HGENCODING'] = 'utf-8'
from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication
path = os.path.dirname(os.path.abspath(__file__))
application = hgwebdir(path+'/hgwebdir.conf')
Радом необходимо создать файл конфигации web-интерфейса репозитория: Выглядеть он должен следующим образом:$ sudo -u hg vim /home/hg/rep
os
/hgwebdir.conf
После этого можно включить виртуальный хост и перегрузить apache:[web] style = coal [paths] DebianWorld.Ru = /home/hg/rep
os
/Debian.World.Ru
$ sudo a2ensite mercurial
$ sudo /etc/init.d/apache2 reload
Настройка доступа к mercurial
На завершающей стадии настройки, необходимо создать файл паролей, указанный в описании виртуального хоста:$ htpasswd -c /home/hg/.hg.htpasswd hgviewer
Теперь можно работать с репозитарием как через браузер, так и через командную строку, обращаясь к репозиторию по адресу: http://hg.debianworld.ru/DebianWorld.Ru/. Например: # Просмотр репозитариев браузером
$ lynx http://hg.debianworld.ru/DebianWorld.Ru
# Копирование репозитория клиентом mercurial
$ hg clone http://hg.debianworld.ru/DebianWorld.Ru
destination directory: DebianWorld.Ru
http authorization required
realm: Restricted Files
user:
password:
Источник
Комментариев нет:
Отправить комментарий