update: introduce a 'UpdateAbort' exception
authorPierre-Yves David <pierre-yves.david@fb.com>
Mon, 05 Oct 2015 04:26:26 -0700
changeset 26683 634666c48b7d
parent 26682 08b068240a1a
child 26684 74ff350c208c
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.
mercurial/commands.py
mercurial/destutil.py
mercurial/error.py
--- 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"""