我通过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]
但是,当我尝试运行hg push来发送更改时,我得到了这个:
$ hg push
pushing to https://<repository>
searching for changes
http authorization required
realm: Mercurial
user: virtualwolf
password:
remote: ssl required
Apache设置为将HTTP上的所有请求重定向到HTTPS。远程服务器运行CentOS,Apache 2.2.3和Mercurial 1.3.1(都通过yum
安装)。
我已经对这个问题进行了大量搜索,最接近答案的是this,但它指的是NGINX而非Apache。
谢谢!
答案 0 :(得分:9)
我通过像这样运行hg服务器解决了同样的问题:
hg serve --config web.push_ssl = No --config“web.allow_push = *”
答案 1 :(得分:2)
事实证明问题与描述的here相同。这与Mercurial没有任何直接关系,但在Apache的结尾却很奇怪。
我必须从我单独的“启用SSL”Apache配置文件中复制SSLEngine On
和关联的SSLProtocol
,SSLCipherSuite
,SSLCertificateFile
和SSLCertificateKeyFile
指令到我的Mercurial虚拟主机文件,即使其他一切都通过HTTPS非常愉快地工作。
答案 2 :(得分:2)
您可以将此行发送到您要推送的cetrale存储库
[web]
push_ssl=False
allow_push=*
毋庸置疑,这是相当不安全的,但是如果你在工作中使用了一个很好的受保护的局域网并且有一个好的防火墙并且你信任局域网上的每个人,那么这是相当不错的。