Mercurial不断返回错误400:错误请求

时间:2012-08-23 13:58:14

标签: mercurial tortoisehg http-status-code-400

每当我尝试与服务器进行任何交互时,Mercurial都会返回“abort:HTTP Error 400:Bad Request”。我们没有使用任何身份验证,因此这不是问题。我们有三个其他开发人员使用相同版本的mercurial安装同一个repo(2.2.3)。他们没有任何问题,所以它让我觉得我在.hg文件夹或其他什么东西腐败了。但我真的不知道。

我能够从新目录克隆和工作就好了。然而,大约4个小时后,它也开始在新目录中再次发生。我在那个时期做的唯一事情就是提交,拉动和推动。几个小时之后我提交并试图拉动,那是我再次收到错误的时候。

这是传入的调试日志(hg --debug --traceback incoming):

using http://myserver/myapp
sending capabilities command
comparing with http://myserver/myapp
query 1; heads
sending batch command
searching for changes
taking initial sample
searching: 2 queries
query 2; still undecided: 208, sample size is: 200
sending known command
Traceback (most recent call last):
File "mercurial\dispatch.pyo", line 88, in _runcatch
File "mercurial\dispatch.pyo", line 740, in _dispatch
File "mercurial\dispatch.pyo", line 514, in runcommand
File "mercurial\dispatch.pyo", line 830, in _runcommand
File "mercurial\dispatch.pyo", line 801, in checkargs
File "mercurial\dispatch.pyo", line 737, in <lambda>
File "mercurial\util.pyo", line 472, in check
File "mercurial\extensions.pyo", line 144, in wrap
File "mercurial\util.pyo", line 472, in check
File "hgext\mq.pyo", line 3528, in mqcommand
File "mercurial\util.pyo", line 472, in check
File "mercurial\commands.pyo", line 3894, in incoming
File "mercurial\hg.pyo", line 513, in incoming
File "mercurial\hg.pyo", line 472, in _incoming
File "mercurial\bundlerepo.pyo", line 342, in getremotechanges
File "mercurial\discovery.pyo", line 45, in findcommonincoming
File "mercurial\setdiscovery.pyo", line 184, in findcommonheads
File "mercurial\wireproto.pyo", line 116, in plain
File "mercurial\wireproto.pyo", line 164, in _submitone
File "mercurial\httppeer.pyo", line 170, in _call
File "mercurial\httppeer.pyo", line 118, in _callstream
File "urllib2.pyo", line 406, in open
File "urllib2.pyo", line 519, in http_response
File "urllib2.pyo", line 444, in error
File "urllib2.pyo", line 378, in _call_chain
File "urllib2.pyo", line 527, in http_error_default
HTTPError: HTTP Error 400: Bad Request
abort: HTTP Error 400: Bad Request

正如我之前所说,我可以做一个克隆,但如果我尝试运行传入,传出,拉或推,我会收到此错误。

2 个答案:

答案 0 :(得分:7)

我能够通过运行

解决此问题
hg rollback

一旦我运行了它,它就不提交我的文件(但保留了更改,所以我可以看到修改后的文件处于hg状态)。然后我能够运行传入和拉动。然后我重新提交了我的代码并将其推出,没有任何问题。

因此,当我提交时,某些东西必须被破坏,只是不确定原因。

答案 1 :(得分:3)

我不知道在这个特定情况下有什么问题。但是我们遇到了同样结果的不同问题 - 传入和拉出命令失败了400 Bad Request。所以这里有关于如何调查失败的收据,以防hg -v --debug无效。

使用Fiddler来捕获和显示HTTP流量。然后按以下方式运行mercurial请求:

hg --config http_proxy.host=127.0.0.1:8888 pull

配置通过Fiddler重定向请求,Fiddler正在侦听端口8888.然后在Fiddler中,您可能会找到红色400回复,并在Inspectors窗格中查看整个消息,而不仅仅是代码。

您可以查看here了解我们的问题,调查和解决方案的详细信息。