Mercurial:为什么在推送到一个可以在浏览器中找到其URL的存储库时会出现404错误?
我有一个Mercurial存储库,如果我在浏览器中导航到它,我可以很好地看到它,但是当我尝试推送时,默认路径设置为我在浏览器中访问的同一URL,我会得到以下结果:Mercurial:为什么在推送到一个可以在浏览器中找到其URL的存储库时会出现404错误?,mercurial,http-status-code-404,push,Mercurial,Http Status Code 404,Push,我有一个Mercurial存储库,如果我在浏览器中导航到它,我可以很好地看到它,但是当我尝试推送时,默认路径设置为我在浏览器中访问的同一URL,我会得到以下结果: abort: HTTP Error 404: Not Found 我推送的URL是否应该在某些方面有所不同?这类似于,其中需要正确配置hgweb.config: / = /home/my_username/hg/** (最后是两颗星) 或者它是一个 对于https,您需要一个,否则您还可以得到404错误。 看 我也遇到了同样的问题
abort: HTTP Error 404: Not Found
我推送的URL是否应该在某些方面有所不同?这类似于,其中需要正确配置hgweb.config
:
/ = /home/my_username/hg/**
(最后是两颗星)
或者它是一个
对于https,您需要一个,否则您还可以得到404错误。看
我也遇到了同样的问题,它最终成为CGI处理程序所允许的动词。我将其限制为GET、POST和HEAD,但最终将其更改为allow all,现在一切正常。我们的主Mercurial存储库突然出现此错误,该存储库位于Windows 2008上的IIS下,Mercurial发布的查询字符串长度超过IIS选择处理的长度 您可以通过查看IIS日志中失败请求的子状态代码(通常是正常HTTP状态代码之后的数字)来判断。在这种情况下,IIS返回,这意味着查询字符串太长。别忘了检查您的子状态代码 要解决此问题,请执行以下操作:
#获取当前查询字符串大小限制
c:\windows\system32\inetsrv\appcmd列表配置/节:requestFiltering-文本:requestLimits.maxQueryString
#设置新的查询字符串大小限制
c:\windows\system32\inetsrv\appcmd set config/section:requestFiltering/requestLimits.maxQueryString:
“内容太大”是我所拥有的。转到IIS日志并查找“404 13”
要修复此问题,请在IIS管理器下,转到“请求筛选”选项,然后选择“标题”选项卡
然后转到右侧的“编辑要素设置”。然后为“允许的最大内容(字节)”字段选择一个非常大的数字
这解决了我的问题。我在尝试推送大量变更集时收到此错误,其中一个变更集特别大,包含许多二进制文件(网站上的jpg更新)。[jpg在源头控制下,与源头在同一回购协议中可能不是最好的方法,但这不是重点。]
在这种情况下,如果您没有访问IIS配置的权限,一种解决方法是一次推送较少的变更集。在OrtoiseHG中,使用传出功能,右键单击要推送的子集的顶部变更集,然后选择“推送到此处”。重复。这不是第二次,因为尝试似乎没有帮助。我应该在哪里拥有hgweb.config文件?我似乎找不到该文件在Windows(7)中的位置。@Mike:hgweb.config将位于服务器端:如果您没有访问权限,我们只能假设它是正确的,并且您的访问凭据/模式有某种错误。具体来说,我不知道是否是这样,但肯定是服务器端设置。第一个链接现在断开了。@Erica谢谢。我已经用一个类似问题的链接替换了那个旧链接(但不如旧问题精确)另请参见:当我将mercurial repos迁移到Bitbucket上的git时,得到了这个错误,URL是相同的,但忘记了它不再是mercurial…很好,这让我困惑了几个小时。我们有了这个确切的问题,您的答案修复了它,非常感谢!对于那些可能无法确定是否发生在自己身上的人,请在IIS日志中搜索字符串“404 15”,如果您在长时间查询后找到它,那么这个答案也会对您有所帮助。
[ui]
username = my.address@myco.com
password = mypassword
schemes = https
[paths]
default = https://myURL.kilnhg.com/Repo/Repositories/Groups/myrepo
# 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>