Журнал LinuxFormat - перейти на главную

Создание VCS на базе Mercurial

Материал из Linuxformat
Перейти к: навигация, поиск

Вариант для RHEL/CentOS/OEL

Сначала следует добавить все необходимые пакеты.

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



Персональные инструменты
купить
подписаться
Яндекс.Метрика