Patchwork [1,of,2,V2] subrepo: add subrepo property to SubrepoAbort exceptions

login
register
mail settings
Submitter Angel Ezquerra
Date Jan. 8, 2013, 10:43 p.m.
Message ID <5a1a5555319c13de73e5.1357684983@Angel-PC.localdomain>
Download mbox | patch
Permalink /patch/509/
State Accepted
Commit 9aa6bee6e9f9475e15f3e439c3f33f71d4439241
Headers show

Comments

Angel Ezquerra - Jan. 8, 2013, 10:43 p.m.
# HG changeset patch
# User Angel Ezquerra <angel.ezquerra@gmail.com>
# Date 1357230958 -3600
# Node ID 5a1a5555319c13de73e51d271de5356b4a0656d0
# Parent  2c1276825e938872ebc099c191eb202f0dbadfcc
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.
Bryan O'Sullivan - Jan. 9, 2013, 12:09 a.m.
On Tue, Jan 08, 2013 at 11:43:03PM +0100, Angel Ezquerra wrote:
> subrepo: add subrepo property to SubrepoAbort exceptions

Pushed to crew, thanks.

Patch

diff --git a/mercurial/subrepo.py b/mercurial/subrepo.py
--- a/mercurial/subrepo.py
+++ b/mercurial/subrepo.py
@@ -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