Создание VCS на базе Mercurial
|
|
|
Вариант для CentOS
Сначала следует добавить все необходимые пакеты.
1) Установить Apache, Mercurial и модуль WSGI для Apache (модуль для работы с Python):
sudo yum -y install httpd mercurial mod_wsgi
добавить Apache в автозапуск:
sudo chkconfig httpd on
и запустить:
sudo /etc/init.d/httpd start
Переходим к настройке репозитория.
2) Создать пользователя hg:
sudo useradd hg
3) Создать директорию от имени hg, в которой будут создаваться сами репозитории:
sudo -u hg mkdir -p /var/hg/repo
и директорию для virtual-host:
sudo -u hg mkdir -p /var/hg/www
4) Создать первый репозиторий (остальные, соответственно, по образу и подобию):
sudo -u hg hg init /var/hg/repo/my_project
Тестируем новый репозиторий. Создать тестовый файл:
echo test > test
Выполнить проверку статуса пакетов в репозитории:
hg status
Корректный результат:
? test
Добавить данный файл в репозиторий:
hg add
Повторно выполнить проверку статуса пакетов в репозитории:
hg status
A test
Коммитим изменения:
hg ci -m "init revision"
No username found, using 'hg@domain.com' instead
Это сообщение говорит о том, что имя пользователя не задано.
Его можно задать следующей командой:
echo "[ui]" > ~/.hgrc; echo "username = MY_NAME user_name <address@domain.com>"
Следующий этап - настройка Apache, WSGI и прав доступа
5) Добавить виртуальный хост в конфигурационный файл Apache (путь к скрипту WSGI должен соответствовать созданному в 8-м пункте):
# VCS Repository Virtual Host WSGISocketPrefix /tmp/wsgi <Directory "/var/hg/repo/"> Order allow,deny Allow from all AllowOverride All Options ExecCGI AddHandler cgi-script .cgi </Directory> <VirtualHost IP.ADD.RE.SS:80> ServerAdmin webmaster@domain.com ServerName vcs.domain.com DocumentRoot /var/hg/repo # wsgi settings WSGIProcessGroup hg WSGIDaemonProcess hg user=hg group=hg threads=2 maximum-requests=1000 # wsgi path to script WSGIScriptAlias / /var/hg/repo/hgwebdir.wsgi # Access restriction <Location /> AuthType Basic AuthName "DOMAIN" AuthUserFile /var/hg/.hg.htpasswd Require valid-user </Location> </VirtualHost>
6) Создать скрипт WSGI:
sudo -u hg tee > /var/hg/repo/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')
7) Создать конфигурационный файл web-интерфейса:
sudo -u hg tee > /var/hg/repo/hgwebdir.conf
со следующим содержанием:
[web] style = coal allow_push = user_name1, user_name2, user_name3, ..., user_nameN allow_archive = gz, zip, bz2 [paths] my_project = /var/hg/repo/my_project other_project = /var/hg/repo/other_project [extensions] Раздел на собственный вкус.
Using Mercurial extensions
Adding functionality with extensions
9) Перечитать конфигурационный файл Apache:
sudo /etc/init.d/httpd reload
10) Теперь следует создать пользователей в файле авторизации:
htpasswd /var/hg/.hg.htpasswd user_name1 (если файла еще не существует, то создавать с флагом "-c")
Ссылки
A tutorial on using Mercurial
Mercurial Reference 1.0