使用该链接,您可以配置尽可能多的位置,因为您将拥有 repos。在每个 repo 目录中,您需要运行 hg serve:
cd repos/repo1;
nohup hg serve -p 8000 &
cd repos/repo2;
nohup hg serve -p 8001 &
然后,您可以通过 nginx 将所有请求代理到正在运行的 hg 服务器。这不是很好的方法。此方法需要手动编辑 nginx 配置,运行 hg serve 等。但是此方法允许您为每个 repo 创建单独的身份验证设置。因此,如果您计划与客户共享 repo,您可以轻松管理它。
相反,您可以使用由 mercurial 提供的特殊脚本 -- hgwebdir。详细信息,你可以在这个页面上很好:https ://www.mercurial-scm.org/wiki/PublishingRepositories#Publishing_Multiple_Repositories
更新:我在服务器上有 mercurial 版本 1.6,对于 runnung repo web UI,我们使用这个脚本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 &,你需要flup python模块,所以: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;
}
}