changeset 26683:634666c48b7d

update: introduce a 'UpdateAbort' exception The 'postincoming' function used by 'hg pull --update' and 'hg unbundle' is catching 'Abort' exceptions to intercept failed update. This feel a bit too wide to me, so I'm introducing a more precise exception to specify update destination issues.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Mon, 05 Oct 2015 04:26:26 -0700
parents 08b068240a1a
children 74ff350c208c
files mercurial/commands.py mercurial/destutil.py mercurial/error.py
diffstat 3 files changed, 6 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/commands.py	Mon Oct 05 21:42:09 2015 -0700
+++ b/mercurial/commands.py	Mon Oct 05 04:26:26 2015 -0700
@@ -5196,7 +5196,7 @@
                 updata =  destutil.destupdate(repo)
                 checkout, movemarkfrom, brev = updata
             ret = hg.update(repo, checkout)
-        except error.Abort as inst:
+        except error.UpdateAbort as inst:
             ui.warn(_("not updating: %s\n") % str(inst))
             if inst.hint:
                 ui.warn(_("(%s)\n") % inst.hint)
--- a/mercurial/destutil.py	Mon Oct 05 21:42:09 2015 -0700
+++ b/mercurial/destutil.py	Mon Oct 05 04:26:26 2015 -0700
@@ -84,10 +84,10 @@
                     msg = _("uncommitted changes")
                     hint = _("commit and merge, or update --clean to"
                              " discard changes")
-                    raise error.Abort(msg, hint=hint)
+                    raise error.UpdateAbort(msg, hint=hint)
                 elif not check:  # destination is not a descendant.
                     msg = _("not a linear update")
                     hint = _("merge or update --check to force update")
-                    raise error.Abort(msg, hint=hint)
+                    raise error.UpdateAbort(msg, hint=hint)
 
     return rev, movemark, activemark
--- a/mercurial/error.py	Mon Oct 05 21:42:09 2015 -0700
+++ b/mercurial/error.py	Mon Oct 05 04:26:26 2015 -0700
@@ -66,6 +66,9 @@
 class ConfigError(Abort):
     """Exception raised when parsing config files"""
 
+class UpdateAbort(Abort):
+    """Raised when an update is aborted for destination issue"""
+
 class OutOfBandError(Exception):
     """Exception raised when a remote repo reports failure"""