通过 HTTP 设置 mercurial

18b*_*tes 4 http authentication mercurial

你能指点一下通过 HTTP/HTTPS 设置 Mercurial 吗?我正在设置一个开发服务器 (Debian),我想在其中创建一个 mercurial 存储库并将更改推送到服务器。我需要进行身份验证以防止任何不必要的访问。

提前致谢。

ror*_*ycl 7

我认为 Apache 是共享 hg 存储库的好方法。hgweb.wsgi 脚本不仅提供了运行多个存储库的可能性,而且允许开发人员通过来自权威源的路径或修订方便地交叉引用项目源代码。

以下过程将提供一种简单的方法来发布存储库,并将其通过 https Web 连接提供给经过身份验证的用户。

首先,我建议在没有本地文件目录的情况下克隆你的 repo。

hg clone -U <myproject> <myproject_to_serve>
Run Code Online (Sandbox Code Playgroud)

接下来(使用非常简单的 WSGI 配置),执行以下操作:

将您的 repo 移动到一个方便的地方来提供它:

mv <myproject_to_serve> /var/www/hg/<myproject_to_serve>
Run Code Online (Sandbox Code Playgroud)

确保 web 服务器用户可以读取/写入 repo:

chown -R www-data:www-data /var/www/hg/<myproject_to_serve>
Run Code Online (Sandbox Code Playgroud)

现在为项目用户设置读/写权限,并为您服务器主页上的项目列表提供一些信息:

vim /var/www/hg/myproject_to_serve>/.hg/hgrc
[web]
description = 'This is my new web-enabled project <myproject>'
contact = support@global.com
# consider limiting push usage to only a subset of users
allow_push = *
Run Code Online (Sandbox Code Playgroud)

现在设置 WSGI

vim /var/www/hg/hgweb.config
[paths]
/myproj = /var/www/hg/my_project_to_serve
Run Code Online (Sandbox Code Playgroud)

现在设置apache

<VirtualHost *:443>

    ServerName hg.mydomain.net
    ServerAdmin webmaster@mydomain.net

    ErrorLog /var/www/mydomain/logs/hg_error_log
    CustomLog /var/www/mydomain/logs/hg_access_log common

    SSLEngine on
    SSLCertificateFile /etc/ssl/mydomain_net.crt
    SSLCertificateKeyFile /etc/ssl/mydomain_net.key

    DocumentRoot "/var/www/hg/"

    <Location "/hg">
        SetHandler None
    </Location>

    # path to provided hgweb.wsgi script
    WSGIScriptAlias / /var/www/hg/scripts/hgweb.wsgi 

    <Location / >
        AuthType Digest
        AuthName "MySoftware"
        AuthUserFile /home/software/software_web_permissions
        Require valid-user
    </Location>

</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

以上要求你具备:

  1. hgweb.wsgi 脚本(它带有标准的 Mercurial 安装,比如 Debian)在某个方便的地方
  2. 用于创建经过身份验证的用户的 apache htdigest 格式的 AuthUserFile。

Surfing tohg.mydomain.net将向您显示一个格式良好的可用项目列表。hg.mydomain.net/myproj成功验证后,将根据/var/www/hg/<myproject_to_serve>repo向您显示项目的当前状态。