8

サーバーとのやり取りを試みるたびに、Mercurial は「abort: HTTP Error 400: Bad Request」を返します。認証を使用していないため、問題はありません。他に 3 人の開発者が、同じバージョンの Mercurial (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

前述のとおり、クローンは作成できますが、incoming、outgoing、pull、または push を実行しようとすると、このエラーが発生します。

4

2 に答える 2

8

実行することでこの問題を解決できました

hg rollback

それを実行すると、ファイルのコミットが解除されました(ただし、変更は保持されていたため、変更されたファイルが hg ステータスで表示されました)。その後、incoming と pull を実行できました。次に、コードを再コミットし、問題なくプッシュしました。

そのため、コミット時に何かが破損しているに違いありませんが、理由はわかりません。

于 2012-08-24T13:55:55.703 に答える
3

この特定のケースで何が問題なのかわかりません。しかし、同じ結果で別の問題がありました。incoming コマンドと pull コマンドが で失敗しまし400 Bad Requestた。hg -v --debugそのため、役に立たない場合に備えて、失敗を調査する方法の領収書を次に示します。

HTTP トラフィックをキャプチャして明らかにするためのFiddlerを考えてみましょう。次に、Mercurial リクエストを次のように実行します。

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

この構成により、ポート 8888 でリッスンしている Fiddler を介して要求がリダイレクトされます。その後、Fiddler で赤い 400 応答が表示され、インスペクター ペインでコードだけでなくメッセージ全体が表示される場合があります。

問題、調査、解決策の詳細については、こちらをご覧ください。

于 2014-10-28T09:53:32.377 に答える