Разбор настройки Mercurial на Ubuntu 12.04 Server amd64

Posted by

В данной заметке я покажу, как настроить простенькую конфигурацию для системы контроля версий измененных файлов и централизованного использования для последующего распространения аутентификационных файлов.

Произвожу обновление репозитариев применительно в системе Desktop/Server:

ekzorchik@monitor:~$ sudo apt-get update

ekzorchik@monitor:~$ sudo apt-get install

ekzorchik@monitor:~$ sudo apt-get install apache2 -y

ekzorchik@monitor:~$ sudo nano /etc/apache2/apache2.conf

ServerName monitor

Далее создаю директорию, которая будет являться центральной по отношения к файлам которая будет основным хранилищем измененных файлов для Mercurial:

ekzorchik@monitor:~$ sudo mkdir -p /var//repository

ekzorchik@monitor:~$ sudo chown -R www-data:www-data /var/hg/repository/

Далее копирую конфигурационный файл репозитариев:

ekzorchik@monitor:~$ cd /var/hg

Файл hgweb.cgi распространяется вместе с инсталляцией Mercurial’а — скопирую его в нашу папку /var/hg:

ekzorchik@monitor:/var/hg$ sudo cp /usr/share/doc/mercurial/examples/hgweb.cgi

и разрешу ему исполняться:

ekzorchik@monitor:/var/hg$ sudo chmod a+x hgweb.cgi

Далее укажу до файла hgweb.cgi для директивы config:

ekzorchik@monitor:/var/hg$ sudo nano /var/hg/hgweb.cgi

нужно заменить в директиве config (было: config = «/path/to/repo/or/config») путь до каталога, вкотором располагается конфиг (стало: config = «/var/hg/hgweb.config»)

Далее создадим файл /var/hg/hgweb.config где пропишу путь до каталога на файловой системе где будут располагаться репозитарии:

ekzorchik@monitor:~$ sudo nano /var/hg/hgweb.config

[collections]

/var/hg/repository = /var/hg/repository

Финальным шагом, создам обработчик префикса /hg при обращении к которому Web-сервис Apache 2 будет исполнять скрипт ответственный за доступ к репозитарию:

ekzorchik@monitor:~$ sudo nano /etc/apache2/sites-available/default

ScriptAlias /hg "/var/hg/hgweb.cgi"

<Directory "/var/hg/hgweb.cgi">

AuthType Basic

AuthName "Mercurial repositories"

AuthUserFile /var/hg/hgusers

Require valid-user ekzorchik

</Directory>

</VirtualHost>

Создам файл с паролем для указанного пользователя:

ekzorchik@monitor:~$ sudo htpasswd -c /var/hg/hgusers ekzorchik

New password: 712mbddr@@

Re-type new password: 712mbddr@@

Adding password for user ekzorchik

Для применения внесенных изменений в apache, перезагружаю сервис:

ekzorchik@monitor:~$ sudo apache2ctl restart

Для того, чтобы ограничить права на запись (операция push) или на чтение я буду использовать файл :

ekzorchik@monitor:~$ sudo nano /etc/mercurial/hgrc

allow_push = *

push_ssl = false

Продемонстрирую работу всех выше проделанных настроек, для этого создам каталог testik и сделаю его репозитарием содержимого:

ekzorchik@monitor:~$ sudo mkdir -p /var/hg/repository/testik

ekzorchik@monitor:~$ cd /var/hg/repository/testik/

ekzorchik@monitor:/var/hg/repository/testik$ sudo hg init

Загрузить тестовый репозитарий через http можно следующим образом в любую директорию, в которую возникла надобность:

ekzorchik@monitor:/var/www$ sudo hg clone http://monitor/hg/testik

destination directory: testik

no changes found

updating to branch default

0 files updated, 0 files merged, 0 files removed, 0 files unresolved

ekzorchik@monitor:/var/www$ ls -l

total 8

-rw-r—r— 1 root root 177 Nov 27 22:36 index.html

drwxr-xr-x 3 root root 4096 Nov 28 12:47 testik – а вот и загруженный каталог с тестового репозитария.

Стоит также не забыть добавить разрешение в правила IPTables чтобы подключаться на 80 порт этой системы:

ekzorchik@monitor:~$ sudo iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 80 -j ACCEPT

Теперь попробую обратиться с другой станции в этой же сети по ссылке в браузере: 192.168.1.13/hg

Ввожу учетные данные:

User Name: ekzorchik

Password: 712mbddr@@

Обращаемся с другой станции по сети к ресурсу Mercurial

 

И передо мной предстоёт история работы с тестовым репозитарием:

В итоге получаю историю работы с репозитарием Mercurial

 

Отлично, это же, что получается мы в одном каталоге складываем файлы (это могут быть ключ доступа к серверам, нужные файлы), а потом просто переходим в нужный каталог и с репозитария выкачиваем эти данные в нужный каталог.

В дальнейшем я покажу, что еще можно сделать с данным функционалом, а пока собственно и все, с уважением автор блога ekzorchik.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

1 + 9 =