20

我有一个 Mercurial 存储库,如果我在浏览器中导航到它,我可以看到它,但是当我尝试进行推送时,我的默认路径设置为我在浏览器中访问的相同 URL,我得到这个:

abort: HTTP Error 404: Not Found

我推送的 URL 是否应该以某种方式有所不同?

4

5 回答 5

12

我们突然开始在我们的主 Mercurial 存储库上遇到此错误,该存储库托管在 Windows 2008 上的 IIS 下。 当您的存储库有太多 head时,Mercurial POST 查询字符串的长度超过 IIS 选择处理的时间。

您可以通过查看 IIS 日志中失败请求的子状态代码来判断(通常是正常 HTTP 状态代码后面的数字)。在这种情况下,IIS 返回子状态 15,这意味着查询字符串太长。不要忘记检查您的子状态代码!

要解决此问题,您需要增加 IIS 的最大查询字符串长度

 # Get the current query string size limit
 c:\windows\system32\inetsrv\appcmd list config /section:requestFiltering -text:requestLimits.maxQueryString

 # Set the new query string size limit
 c:\windows\system32\inetsrv\appcmd set config /section:requestFiltering /requestLimits.maxQueryString:<NEW SIZE>
于 2011-12-06T02:24:50.060 回答
12

“内容太大”是我所拥有的。转到 IIS 日志并查找“404 13”。

要修复它,在 IIS 管理器下,转到“请求过滤”选项,然后选择“标题”选项卡。

然后转到右侧的“编辑功能设置”。然后为“最大允许内容(字节)”字段选择一个非常大的数字。

这解决了我的问题。

于 2013-11-06T05:30:59.810 回答
5

是不是和这个配置类似,hgweb.config需要正确配置的地方:

/ = /home/my_username/hg/**

(最后有两颗星)

还是http 与 https 的问题

对于https,你需要一个正确的.hgrc文件,否则你也会得到404错误。
请参阅.hg/hgrc文件手册页

[ui]

username = my.address@myco.com

password = mypassword

schemes = https

[paths]

default = https://myURL.kilnhg.com/Repo/Repositories/Groups/myrepo
于 2010-03-23T06:45:16.150 回答
2

我遇到了同样的问题,它最终成为 CGI 处理程序允许的动词。我将它限制为 GET、POST 和 HEAD,但最终将其更改为允许所有,现在它工作正常。

于 2010-04-28T13:08:37.520 回答
1

我在尝试推送大量变更集时收到此错误,其中一个特别大的变更集包含许多二进制文件(网站上的 jpg 更新)。[在源代码控制下的 jpg,在与源代码相同的存储库中可能不是最好的方法,但这不是重点。]

在这种情况下,如果您无权访问 IIS 配置,解决方法是一次推送更少的变更集。在 TortoiseHg 中,使用 Outgoing 功能,右键单击要推送的子集的顶部变更集,然后选择 Push To Here。重复。

于 2016-01-17T02:07:56.000 回答