2

我正在设置我的自由服务器,它将使用 Mercurial 进行所有版本控制。每个项目都有自己的文件夹和自己的存储库。然后,我可以通过转到该特定文件夹从我的家用计算机、工作计算机或任何其他计算机进行克隆。

我想将这些存储库提供到网络浏览器中,以便我在需要时进行可视化浏览。我环顾四周,看到了这个:https ://www.mercurial-scm.org/wiki/HgServeNginx

这看起来是在正确的轨道上,因为无论如何我都会在这个服务器上使用 Nginx。但我很想知道如何正确设置它。我需要做些什么才能通过 Web 浏览器有效地在我的服务器上提供多个存储库?

对此的任何帮助或经验丰富的见解都将非常有助于确保我正确地执行此操作。

非常感谢。

4

1 回答 1

1

使用该链接,您可以配置尽可能多的位置,因为您将拥有 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;
    }
}
于 2010-09-07T23:06:08.723 回答