我读过大量的文章,但是我越努力,似乎就越偏离主题。
我正在尝试通过 HTTP 提供 mercurial 存储库。我将其与 redmine 一起使用。
我已经安装了 mercurial-server。我设置了一个无法从外部连接的存储库。当我尝试浏览该地址时,我可以看到我放在目录中的 index.html,但是当我使用 TortoiseHg 并浏览同一地址时,我得到了 404。我应该指向特定文件吗?我只尝试过像这样指向目录“http://www.example.com/hg/repo/“。
现在我只是试图拉取 repo,但如果可能的话,我希望能够暂时通过 HTTP 推送。
我将如何设置用户推送访问(通过 HTTPS)到存储库?用户是否必须存在于 Linux 机器上?这就是文章和教程让我感到困惑的地方,因为有些文章和教程提到了“mercurial 用户”,而其他文章和教程在为存储库提供服务的机器上创建了自己的用户。我想使用最简单的方案。
请尽可能详细地说明...我将非常感谢有关此问题的任何帮助!
答案1
在下面的工作示例中,您需要一个有效的身份验证才能进行拉取(请参阅“需要有效用户”)以及一个与私有组用户的有效身份验证才能进行推送(请参阅“限制指令”)。
<Directory /var/www/sources.XXXXXXXXx/www/private/>
RewriteEngine on
RewriteBase /private
RewriteRule ^$ hgwebdiri.cgi [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) hgwebdir.cgi/$1 [QSA,L]
Options FollowSymLinks +ExecCGI
AddHandler cgi-script .cgi
DirectoryIndex hgwebdir.cgi
AllowOverride None
# Order allow,deny
# Allow from all
AuthUserFile /etc/mercurial/hgweb.htpasswd
AuthGroupFile /etc/mercurial/hgweb.htgroup
AuthName "XXXXXXXXXXXXXx private sources"
AuthType Basic
Require valid-user
<Limit POST PUT>
Require group private
</Limit>
</Directory>
答案2
不要忘记将“allow_push”放入全局 hgrc 或托管 repo 的 hgrc 文件中。