Используя эту ссылку, вы можете настроить столько мест, сколько у вас будет репо. В каждом каталоге репозитория вам нужно запустить hg serve:
cd repos/repo1;
nohup hg serve -p 8000 &
cd repos/repo2;
nohup hg serve -p 8001 &
Тогда вы можете просто перенаправить все запросы через nginx на запущенные hg-серверы. Это не очень хороший способ. Этот метод требует ручного редактирования конфигурации nginx, запуска hg serve и т. Д. Но этот метод позволяет вам создавать отдельные параметры аутентификации для каждого репо. Поэтому, если вы планируете делиться репо с клиентом, вы можете легко управлять этим.
Вместо этого вы можете использовать специальный скрипт, который поставляется вместе с mercurial - hgwebdir.
Подробную информацию вы можете оштрафовать на этой странице: https://www.mercurial -scm.org / wiki / PublishingRepositories # Publishing_Multiple_Repositories
ОБНОВЛЕНИЕ: У меня есть mercurial версии 1.6 на сервере, и для веб-интерфейса runnung repo мы используем этот скрипт hgwebdir.py :
#!/usr/bin/env python
import sys
import os
os.environ["HGENCODING"] = "UTF-8"
from mercurial.hgweb.hgwebdir_mod import hgwebdir
from mercurial.hgweb.request import wsgiapplication
from flup.server.fcgi import WSGIServer
def make_web_app():
return hgwebdir('/home/hg/hgwebdir.conf')
WSGIServer(wsgiapplication(make_web_app),
umask=0000,
bindAddress='/home/hg/hg.sock').run()
hgwebdir.conf выглядит так:
[web]
allow_push = some_useronly
baseurl =
push_ssl = false
[collections]
/home/hg/repos = /home/hg/repos
Для запуска: nohup hgwebdir.py &, вам необходим модуль python flup, поэтому: easy_install flup
Связанная часть nginx.conf:
server {
listen 80;
server_name hg.example.com;
gzip off;
include fastcgi_params;
location / {
client_max_body_size 30m;
auth_basic "Restricted Area";
auth_basic_user_file /home/hg/hg.password;
fastcgi_pass unix:/home/hg/hg.sock;
}
}