使用 Apache 和 Windows 通过 HTTP 推送我的 Mercurial 存储库

Posted

技术标签:

【中文标题】使用 Apache 和 Windows 通过 HTTP 推送我的 Mercurial 存储库【英文标题】:Pushing my Mercurial Repository through HTTP with Apache and Windows 【发布时间】:2011-09-10 03:11:02 【问题描述】:

所以我做到了。我可以使用 HTTP 将 mercurial-repositories 远程克隆到我的 Windows Server 2003 机器和该机器的 ipaddress。虽然我确实停用了 IIS6 并且现在正在使用 Apache 2.2.x。但目前并非所有工作都有效......该死!事情是这样的:

克隆顺利!但是,当我想将更改推送到原始存储库时,我收到消息“无法锁定静态 http 存储库”。在互联网上,我读到了一些关于 Mercurial 并非旨在推动 HTTP 连接的解释。不过,在 Mercurial 网站上有一些关于配置 hgrc 文件的内容。

还可以将 Apache 配置为通过 HTTPS(或 SSL)托管。为此,您必须加载启用 OpenSSL 并生成密钥的模块。

配置 hgrc 文件 只需在 [web] 行下添加“push_ssl = false”。但是当你把你的改变推回去的时候,把这个文件放在哪里呢?!因为我把它放在服务器的根目录下,在“.hg”目录下,没有任何作用。

在 Apache 中使用 SSL/HTTPS 当我尝试访问“https://myipaddress”时,它会失败,显示一条荷兰语消息,这意味着“服务器响应时间过长”。尝试推送也会给我一个荷兰语错误消息,意思大致相同。尽管我完全按照this blog 的步骤操作,但它无法通过 https 连接到我的服务器。

我不在乎上述哪种解决方案适合我。事实证明,到目前为止,它们都不起作用。所以请,有人可以帮我解决上述问题之一吗?选择最简单的!非常感谢您的帮助,不仅来自我。

总结 -Windows 服务器 2003 - 带有 OpenSSL 的 Apache 2.2 -水银 1.8.2 -我可以克隆,但不能推送!

谢谢!

马丁巴尔

【问题讨论】:

【参考方案1】:

似乎您可能错误地配置了 apache 以使其执行您想要的操作。根据您的问题,听起来您有一条路径(可能是服务器的根目录)指向您要服务的存储库。

Mercurial 附带了一个用于此目的的脚本,在最新版本中它是 hgweb.cgi。有相当好的设置说明on the mercurial site。它应该允许克隆和推送。如果您不配置 https,您将需要 push_ssl=false 以及一个 allow_push 行,该行将允许某些用户或所有 (*) 推送到存储库。但所有这些都应该是设置文档的一部分。

【讨论】:

我的 SSL 工作正常。很多人说只通过http传输敏感数据是不明智的。但我仍然收到消息“无法锁定静态 http 存储库”。我使用 hgweb.cgi 并将 mydomain/hg 设置为 hgweb.cgi 的 ScriptAlias。在 hgweb.cgi 中,我有一个存储库集合到 mydomain/repositories。有我的回购。但是如何才能推送到特定的存储库而不会遇到错误“无法锁定静态http存储库”?

以上是关于使用 Apache 和 Windows 通过 HTTP 推送我的 Mercurial 存储库的主要内容,如果未能解决你的问题,请参考以下文章

Apache在Windows上停止webdav目录列表

centOS7上安装samba

Apache配置与应用

Windows下的php.ini 无效使用

在 Windows 中编译 Apache Thrift 服务

windows下apache配置ssl(https)服务器