changeset 9748:67e5d5a2f625

Sometimes pushing to an HTTP repo fails with a useless message. abort: 'https://.../.../' does not appear to be an hg repository! Ought to produce a better diagnostics on the client. With patched 1.3.1, observed to produce an Apache HTML error message (from cgitb) including the vital text: File ".../hgwebdir.cgi", line 70, in ? wsgicgi.launch(application) File "mercurial/hgweb/wsgicgi.py", line 68, in launch File "mercurial/hgweb/hgwebdir_mod.py", line 91, in __call__ File "mercurial/hgweb/hgwebdir_mod.py", line 148, in run_wsgi File "mercurial/hgweb/hgweb_mod.py", line 100, in run_wsgi File "mercurial/hgweb/protocol.py", line 156, in unbundle File "mercurial/localrepo.py", line 2031, in addchangegroup File "mercurial/revlog.py", line 1204, in addgroup LookupError: 00manifest.i@......: unknown parent Might also be helpful if server's hgweb_mod.run_wsgi caught unexpected errors and returned a well-formed error response including the stack trace. The client patch would still be useful in this case, because it would let you diagnose issues with HTTP proxy servers and so on.
author Jesse Glick <jesse.glick@sun.com>
date Sat, 17 Oct 2009 14:00:41 -0400
parents 85a3285860d3
children 1b1b33ae5a24
files mercurial/httprepo.py
diffstat 1 files changed, 3 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/httprepo.py	Mon Oct 26 02:06:23 2009 +0200
+++ b/mercurial/httprepo.py	Sat Oct 17 14:00:41 2009 -0400
@@ -106,8 +106,9 @@
                 proto.startswith('text/plain') or
                 proto.startswith('application/hg-changegroup')):
             self.ui.debug("requested URL: '%s'\n" % url.hidepassword(cu))
-            raise error.RepoError(_("'%s' does not appear to be an hg repository")
-                                  % safeurl)
+            raise error.RepoError(_("'%s' does not appear to be an hg repository:\n"
+                                    "---%%<--- (%s)\n%s\n---%%<---\n")
+                                  % (safeurl, proto, resp.read()))
 
         if proto.startswith('application/mercurial-'):
             try: