Mercurial:即使推送到HTTPS存储库,也需要"remote:ssl"

Vir*_*olf 4 apache ssl mercurial

我通过HTTPS运行Apache和hgwebdir.cgi(带有自签名证书),我可以通过浏览器查看存储库并在本地克隆它.我不知道它是否有任何影响,但我正在重写URL以使它们更漂亮:

$ cat .htaccess
Options +ExecCGI
RewriteEngine On
RewriteBase /public
RewriteRule ^$ hgwebdir.cgi  [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) hgwebdir.cgi/$1  [QSA,L]
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行hg push来发送更改时,我得到了这个:

$ hg push
pushing to https://<repository>
searching for changes
http authorization required
realm: Mercurial
user: virtualwolf
password: 
remote: ssl required
Run Code Online (Sandbox Code Playgroud)

Apache设置为将HTTP上的所有请求重定向到HTTPS.远程服务器运行CentOS,Apache 2.2.3和Mercurial 1.3.1(都通过安装yum).

我已经做了很多关于这个问题的搜索,最接近我得到答案的是这个,但它指的是NGINX而不是Apache.

谢谢!

Iva*_*anM 9

我通过像这样运行hg服务器解决了同样的问题:

hg serve --config web.push_ssl = No --config"web.allow_push =*"


Vir*_*olf 3

所以事实证明问题与此处描述的相同。这与 Mercurial 没有直接关系,但对 Apache 来说却很奇怪。

我必须将SSLEngine On相关的SSLProtocolSSLCipherSuiteSSLCertificateFile、 和SSLCertificateKeyFile指令从单独的“启用 SSL”Apache 配置文件复制到我的 Mercurial 虚拟主机文件中,尽管其他一切都通过 HTTPS 正常运行。