2

我正在尝试在工作中安装 Mercurial 设置,以使用我们的旧代码对其进行评估。我目前使用的“服务器”只是在我们的 Intranet 上运行带有 SP3 的 Windows XP 的桌面。“客户端”安装在我的本地桌面上,也运行带有 SP3 的 Windows XP。(我也在两台机器上使用 TortoiseHG。)

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

4

3 回答 3

0

好吧,当我在我的 TortoiseHG 中启动内部服务器时(对于单个 repo,Repostory-Start Web-server从 Workbench 主菜单)

  • 服务器窗口告诉“在 localhost: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 存储库。服务器配置很简单,一切都在 TortoiseHG 设置中完成。

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

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

(现在禁用推送,在仅拉模式下工作)

PS:Windows XP SP3 上的 TortoiseHg 版本 2.7.1

于 2013-03-08T11:18:02.710 回答
0

Push 意味着将变更集从一个 repo 移动到另一个 repo。您还没有声明您制作了两个单独的回购克隆,然后尝试从 A 推送到 B。所以假设您在这里感到困惑,并谈谈这种困惑:想象一下我尝试从自己的回购推送到hg 服务实例针对我自己的存储库运行。这就像试图给自己打电话告诉自己一些事情。

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

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

至于设置服务器,我可以推荐三个相当简单的选项:

  1. 命令行中的“hg serve”,如其他答案所示。简单,仅供临时使用。非常适合学习。

  2. 在 Apache 中安装 Mercurial(比在 IIS 中安装 Mercurial 更容易)以获得具有完全身份验证和可能加密的永久 Web 服务器。如果您使用Mercurial wiki 上的hgwebdir说明,则需要大约一个小时。如果您使用预先构建的解决方案,它应该花费更少的时间。我使用了 Bitnami 的 Windows 预建解决方案,最近 5 分钟就搞定了。Bitnami 提供了可用的安装程序,这些安装程序将获取 python、apache、mercurial 和其他东西,所有这些都安装并在他们所谓的“堆栈”中一起工作(一堆已经工作的东西)。

  3. 这是真正出色的解决方案。使用 BitBucket.org 上的免费私人网络存储库。免费供公共(开源)和私人(小型团队和个人)使用,对于大型团队来说相当便宜。管理工作为您服务?只不过是登录一个网站。你完成了。

于 2013-03-11T13:28:20.847 回答
0

我有类似的设置,我也有类似的问题。

我使用以下命令来运行我的 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:\hg\my-repo

通过此设置,我可以通过访问 url 来访问我的存储库http://ip:port/mercurial/my-repo

我可以毫无问题地推动。

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

于 2013-03-07T19:31:03.203 回答