changeset 9423:1444a42f6052

Make distinct lookup error for localrepo.lookup This allows clone/share to correctly distinguish lookup errors from corruption errors and catch only the former.
author Matt Mackall <mpm@selenic.com>
date Mon, 31 Aug 2009 10:58:33 -0500
parents 3738c8cff1bf
children 799373ff2554 744cb8e93936
files mercurial/error.py mercurial/hg.py mercurial/localrepo.py
diffstat 3 files changed, 10 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/error.py	Thu Aug 27 00:00:15 2009 +0200
+++ b/mercurial/error.py	Mon Aug 31 10:58:33 2009 -0500
@@ -36,6 +36,9 @@
 class RepoError(Exception):
     pass
 
+class RepoLookupError(RepoError):
+    pass
+
 class CapabilityError(RepoError):
     pass
 
--- a/mercurial/hg.py	Thu Aug 27 00:00:15 2009 +0200
+++ b/mercurial/hg.py	Mon Aug 31 10:58:33 2009 -0500
@@ -137,10 +137,12 @@
         if update is not True:
             checkout = update
         for test in (checkout, 'default', 'tip'):
+            if test is None:
+                continue
             try:
                 uprev = r.lookup(test)
                 break
-            except LookupError:
+            except error.RepoLookupError:
                 continue
         _update(r, uprev)
 
@@ -309,10 +311,12 @@
                 if update is not True:
                     checkout = update
                 for test in (checkout, 'default', 'tip'):
+                    if test is None:
+                        continue
                     try:
                         uprev = dest_repo.lookup(test)
                         break
-                    except:
+                    except error.RepoLookupError:
                         continue
                 _update(dest_repo, uprev)
 
--- a/mercurial/localrepo.py	Thu Aug 27 00:00:15 2009 +0200
+++ b/mercurial/localrepo.py	Mon Aug 31 10:58:33 2009 -0500
@@ -509,7 +509,7 @@
                 key = hex(key)
         except:
             pass
-        raise error.RepoError(_("unknown revision '%s'") % key)
+        raise error.RepoLookupError(_("unknown revision '%s'") % key)
 
     def local(self):
         return True