8

每当我尝试与服务器进行任何交互时,Mercurial 都会返回“中止:HTTP 错误 400:错误请求”。我们没有使用任何身份验证,所以这不是问题。我们有其他三个开发人员在安装相同版本的 mercurial (2.2.3) 的同一 repo 上工作。他们没有任何问题,所以这让我觉得我正在破坏 .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

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

4

2 回答 2

8

我能够通过运行解决此问题

hg rollback

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

所以当我提交时,一定有一些东西被破坏了,只是不知道为什么。

于 2012-08-24T13:55:55.703 回答
3

我不知道在这种特定情况下有什么问题。但是我们遇到了相同结果的不同问题 - 传入和拉取命令失败400 Bad Request。所以这里是如何调查失败的收据,以防万一hg -v --debug没有帮助。

使用 Fiddler来捕获和显示 HTTP 流量。然后运行 ​​mercurial 请求,如下所示:

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

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

您可以在此处查看有关我们的问题、调查和解决方案的详细信息。

于 2014-10-28T09:53:32.377 回答