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.
--- 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"""