Версия ос CentOS
cat /etc/redhat-release
CentOS release 6.7 (Final)
В репозитории ос hg очень старый. По этому скачаем более свежую версию, заходим сюда https://www.mercurial-scm.org/wiki/Download
Выбираем нужный дистрибутив, выбрал centos 6, попал сюда: https://www.mercurial-scm.org/release/centos6/RPMS/x86_64/
Выбрал нужную версию hg (в данном случае mercurial-3.9.1), переходим на vps через ssh и устанавливаем:
rpm -Uvh https://www.mercurial-scm.org/release/centos6/RPMS/x86_64/mercurial-3.9.1-1.x86_64.rpm
Проверяем версию:
hg --version
Распределенная SCM Mercurial (версия 3.9.1)
(see https://mercurial-scm.org for more information)
Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Подразумевается что веб сервер у вас установлен. У меня на vps стоит веста панель и там уже установлена связка httpd (apache) и nginx.
По этому идём в стандартную папку для веста панели и создадим хост, где будут лежать репозитории:
cd /home/admin/web
У вас пути могут различаться. Создадим папку хоста:
mkdir repository
И перейдём в папку:
cd repository
Создадим файл конфига:
touch hgweb.config
Создадим папку для репозитория:
mkdir project1
Теперь нужно скопировать cgi скрипт (hgweb.cgi) hg в папку хоста. Он уже готовы и лежит в папке: /usr/share/doc/mercurial-Ваша_версия_из_названия. Копируем:
cp /usr/share/doc/mercurial-3.9.1/hgweb.cgi /home/admin/web/repository
Если не смогли его найти папку mercurial-3.9.1, ни чего страшного идите в папку и найдите вручную эту папку с вашей версией.
Открываем для редактирования файл hgweb.cgi (людым доступным и удобным редактором):
nano /home/admin/web/repository/hgweb.cgi
Находим параметр “config =” и вставляем наш путь к файлу конфига (который мы создали ранее):
#!/usr/bin/env python
#
# An example hgweb CGI script, edit as necessary
# See also https://mercurial-scm.org/wiki/PublishingRepositories
# Path to repo or hgweb config to serve (see 'hg help hgweb')
config = "/var/www/repository/hgweb.config"
# Uncomment and adjust if Mercurial is not installed system-wide
# (consult "installed modules" path from 'hg debuginstall'):
#import sys; sys.path.insert(0, "/path/to/python/lib")
# Uncomment to send python tracebacks to the browser if an error occurs:
#import cgitb; cgitb.enable()
from mercurial import demandimport; demandimport.enable()
from mercurial.hgweb import hgweb, wsgicgi
application = hgweb(config)
wsgicgi.launch(application)
config = "/home/admin/web/repository/hgweb.config"
Сохраняем. Открываем для редактирования конфиг hgweb.config:
nano /home/admin/web/repository/hgweb.config
Вставляем в него параметры и сохраняем:
[web]
allow_push = *
push_ssl = false
base_url = /
[paths]
HostName1.ru = /var/www/repository/HostName1.ru/
HostName2.ru = /var/www/repository/HostName2.ru/
HostName3.ru = /var/www/repository/HostName3.ru/
Обратите внимание что я вставил название созданного репозитория.
Http доступ к hg
Теперь надо настроить http доступ к репозиторию. Для этого надо добавить хосты в веб сервер. Например для httpd (apache) надо добавить в файле /etc/httpd/conf/httpd.conf
Вставляем хост:
<VirtualHost XX.XX.XX.XX:80>
ServerName hg.HostName.ru
AssignUserID user user
DocumentRoot /var/www/repository/
ScriptAliasMatch (.*) /var/www/repository/hgweb.cgi/$1
<Directory "/var/www/repository/">
AllowOverride All
</Directory>
#AuthType Basic
#AuthName "Mercurial"
#AuthUserFile /var/www/repository/.htpasswd
#Require valid-user
</VirtualHost>
Переходим в папку с репозитарием
cd /var/www/repository/
Правим hgweb.config
[web]
encoding = UTF-8
#encoding = Windows-1251
templates = /var/www/themes/boundstate
style = boundstate
allow_push = *
push_ssl = false
base_url = /
descend = True
collapse = True
[paths]
#HostName1.ru = /var/www/repository/HostName1.ru/
#HostName2.ru = /var/www/repository/HostName2.ru/
/ = /var/www/repository/**
Создаем репозитарий
hg init HostName1.ru
Меняем владельца на репозиторий, на пользователя из под которого работает веб сервер
chown -R user:user /var/www/repository/HostName1.ru/
В каждой каталоге репозитария создаем файл hgrc
например /var/www/repository/HostName1.ru/.hg/hgrc
[web]
encoding = Windows-1251
description = Компоненты HostName1.ru
contact = micro
name = HostName1.ru