subrepo: add subrepo property to SubrepoAbort exceptions
authorAngel Ezquerra <angel.ezquerra@gmail.com>
Thu, 03 Jan 2013 17:35:58 +0100
changeset 18263 9aa6bee6e9f9
parent 18262 ed923a2d5ae9
child 18264 d6ebdbdd70a5
subrepo: add subrepo property to SubrepoAbort exceptions This new property contains the path of the subrepo that generated the exception. This information can then be used by GUI tools such as TortoiseHg.
mercurial/subrepo.py
--- a/mercurial/subrepo.py	Tue Jan 08 15:43:48 2013 -0800
+++ b/mercurial/subrepo.py	Thu Jan 03 17:35:58 2013 +0100
@@ -16,6 +16,9 @@
 
 class SubrepoAbort(error.Abort):
     """Exception class used to avoid handling a subrepo error more than once"""
+    def __init__(self, *args, **kw):
+        super(SubrepoAbort, self).__init__(*args, **kw)
+        self.subrepo = kw.get('subrepo')
 
 def annotatesubrepoerror(func):
     def decoratedmethod(self, *args, **kargs):
@@ -25,9 +28,10 @@
             # This exception has already been handled
             raise ex
         except error.Abort, ex:
-            errormsg = _('%s (in subrepo %s)') % (str(ex), subrelpath(self))
+            subrepo = subrelpath(self)
+            errormsg = _('%s (in subrepo %s)') % (str(ex), subrepo)
             # avoid handling this exception by raising a SubrepoAbort exception
-            raise SubrepoAbort(errormsg, hint=ex.hint)
+            raise SubrepoAbort(errormsg, hint=ex.hint, subrepo=subrepo)
         return res
     return decoratedmethod