Add exception class for repository errors
authormpm@selenic.com
Tue, 28 Jun 2005 00:55:59 -0800
changeset 499 81c563a254be
parent 498 8cf3999b3d03
child 500 ebc4714a7632
Add exception class for repository errors -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Add exception class for repository errors This gives friendlier errors for repo exceptions manifest hash: f3bef1ddb0c3911b9866ebdafa1fe72df48c8ecd -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCwRCfywK+sNU5EO8RAg7fAJ9PMka8pJCy7mMTqFFJ5aQFemHpxwCfezPR cZRAXmbWTTI+/WnVFDjpfM0= =8crk -----END PGP SIGNATURE-----
mercurial/commands.py
mercurial/hg.py
--- a/mercurial/commands.py	Tue Jun 28 00:46:16 2005 -0800
+++ b/mercurial/commands.py	Tue Jun 28 00:55:59 2005 -0800
@@ -851,13 +851,13 @@
         help(u, cmd)
         sys.exit(-1)
 
-    if cmd not in norepo.split():
-        repo = hg.repository(ui = u)
-        d = lambda: i[0](u, repo, *args, **cmdoptions)
-    else:
-        d = lambda: i[0](u, *args, **cmdoptions)
+    try:
+        if cmd not in norepo.split():
+            repo = hg.repository(ui = u)
+            d = lambda: i[0](u, repo, *args, **cmdoptions)
+        else:
+            d = lambda: i[0](u, *args, **cmdoptions)
 
-    try:
         if options['profile']:
             import hotshot, hotshot.stats
             prof = hotshot.Profile("hg.prof")
@@ -870,6 +870,8 @@
             return r
         else:
             return d()
+    except hg.RepoError, inst:
+        u.warn("abort: ", inst, "!\n")
     except SignalInterrupt:
         u.warn("killed!\n")
     except KeyboardInterrupt:
--- a/mercurial/hg.py	Tue Jun 28 00:46:16 2005 -0800
+++ b/mercurial/hg.py	Tue Jun 28 00:55:59 2005 -0800
@@ -318,6 +318,8 @@
 
     return o
 
+class RepoError(Exception): pass
+
 class localrepository:
     def __init__(self, ui, path=None, create=0):
         self.remote = 0
@@ -330,12 +332,12 @@
                 while not os.path.isdir(os.path.join(p, ".hg")):
                     oldp = p
                     p = os.path.dirname(p)
-                    if p == oldp: raise "No repo found"
+                    if p == oldp: raise RepoError("no repo found")
                 path = p
             self.path = os.path.join(path, ".hg")
 
             if not create and not os.path.isdir(self.path):
-                raise "repository %s not found" % self.path
+                raise RepoError("repository %s not found" % self.path)
 
         self.root = path
         self.ui = ui
@@ -911,7 +913,7 @@
 
         for f in fetch:
             if f in m:
-                raise "already have", short(f[:4])
+                raise RepoError("already have changeset " + short(f[:4]))
 
         self.ui.note("adding new changesets starting at " +
                      " ".join([short(f) for f in fetch]) + "\n")