配置 Mercurial 的内置服务器



我正在尝试在工作中安装Mercurial设置,以便用我们的遗留代码对其进行评估。我目前使用的"服务器"只是在我们的内部网上运行Windows XP和SP3的台式机。"客户端"安装在我的本地桌面上,也运行Windows XP和SP3。(我也在两台机器上使用TortoiseHG)

web服务器运行在http://localhost:8000,我可以在浏览器中查看存储库。但是,当我试图检测对仓库的传出更改时,我得到一个HTTP 404错误。我可以看到请求出现在服务器的日志中,所以我指向了正确的位置,但它显示的是GET http://host:8000/reponame?cmd=capabilities HTTP/1.1 404。无论我更改什么设置,我似乎都无法让客户机成功地对repo执行命令。有人知道为什么这行不通吗?

我有一个类似的设置,并且我遇到了类似的问题。

我使用以下命令运行HG服务(它位于批处理文件中):

hg.exe serve --prefix mercurial --address 123.12.1.1 --port 8008 --web-conf hg-web.conf --accesslog hg-access.log --errorlog hg-error.log

在hg-web.conf中我有:

[web]
style = default
allow_push = *
push_ssl = false
[paths]
my-repo = c:hgmy-repo
有了这个设置,我可以通过访问url http://ip:port/mercurial/my-repo 来访问我的存储库

我可以毫不费力地推。

尝试这个设置,我希望它能帮助你解决你的问题。

嗯,当我在我的TortoiseHG(单个repo, Repostory - Start Web-server从工作台主菜单)启动内部服务器

  • 服务器窗口告诉'运行在本地主机:8000',但实际上服务器监听所有接口(netstat -na显示TCP 0.0.0.0:8000 0.0.0.0:0 LISTENING)
  • 在fork中的clone-edit-commit和测试传出(直接从THG)我看到

% hg --repository Z:clone outgoing http://10.1.14.94:8000/

comparing with http://10.1.14.94:8000/

searching for changes

changeset: 39:c57a9357ec55

tag: tip

user: I

date: Fri Mar 08 17:00:05 2013 +0600

summary: Test-change

以前,我也从我的另一台主机上把这些Mercurial repos从| pull/push到。服务器配置是微不足道的,所有都在TortoiseHG设置中完成。

我在mercurial.ini中的[web]部分(仅此而已)

[web]
port = 8000
encoding = UTF-8
allow_archive = bz2, gz, zip
style = gitweb

(现在禁用push,只能在pull模式下工作)

PS: TortoiseHg version 2.7.1 on Windows XP SP3

Push意味着将变更集从一个仓库移动到另一个仓库。您没有说明您创建了两个独立的repo克隆,然后尝试从A推送到b。因此,让我们假设您在这里感到困惑,并讨论这种困惑:想象一下,我尝试从我自己的repo推送到运行在我自己的repo上的hg服务实例。这就像给自己打电话告诉自己一些事情。

其次,如果您真的试图从A推送到B,并且A中确实有需要到达B的更改,那么,您的实际问题可能是您没有将存储库的URL正确输入到GUI工具中,我假设它是Tortoise HG。当您学习时,请在命令行中再试一次。如果你得到一个错误,在这里发布错误:hg push http://myserver:8000

我第一次尝试Mercurial时,在使用Subversion很长一段时间之后,我开始认为我比实际需要更多的"服务器"组件。在subversion中,服务器是提交发生的地方。在mercurial中,提交发生在本地,当您将其推送到远程(可能是中央)服务器时,团队中的其他人就会看到您的更改。这是最大的不同。我猜您正在尝试推动,因为提交是在本地发生的。如果您对提交和推送之间的区别感到困惑,那么我建议您查看http://hginit.com/

至于设置服务器,我可以推荐三个相当简单的选项:
  1. "hg serve"来自命令行,如其他答案所示。很简单,而且只能临时使用。

  2. 在Apache中安装Mercurial(比在IIS中安装Mercurial更容易),用于具有完整身份验证和可能加密的永久web服务器。如果您使用hg wiki上的hgwebdir指令,它应该花费您大约一个小时。如果您使用预构建的解决方案,则应该花费更少的时间。我最近使用Bitnami的预构建窗口解决方案,并在5分钟内完成了一个。Bitnami提供了可用的安装程序,可以安装python, apache, mercurial和其他东西,所有这些都安装在他们所谓的"堆栈"中并一起工作(一堆已经工作的东西)。

  3. 这是一个非常棒的解决方案。使用BitBucket.org上的免费私有网络存储库。对公共(开源)和私人(小型团队和个人)使用免费,对大型团队相当便宜。你的行政工作吗?只不过是登录一个网站而已。

最新更新