Версия ос 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