Mercurial > hg-stable
changeset 28141:13bb8de97f87
destutil: add more precise error classes for destmerge
Having exception classes more precise than 'Abort' will allow us to properly
catch "nothing to rebase" situations when we will be using 'destmerge' in
rebase.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Tue, 09 Feb 2016 23:30:41 +0000 |
parents | 276644ae9e8d |
children | 85e28a46c7f1 |
files | mercurial/destutil.py mercurial/error.py |
diffstat | 2 files changed, 15 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/destutil.py Mon Feb 08 22:58:15 2016 +0000 +++ b/mercurial/destutil.py Tue Feb 09 23:30:41 2016 +0000 @@ -209,10 +209,10 @@ node = bmheads[0] elif len(bmheads) > 2: msg, hint = msgdestmerge['toomanybookmarks'][action] - raise error.Abort(msg, hint=hint) + raise error.ManyMergeDestAbort(msg, hint=hint) elif len(bmheads) <= 1: msg, hint = msgdestmerge['nootherbookmarks'][action] - raise error.Abort(msg, hint=hint) + raise error.NoMergeDestAbort(msg, hint=hint) assert node is not None return node @@ -225,13 +225,13 @@ branch = repo.dirstate.branch() elif not sourceset: msg, hint = msgdestmerge['emptysourceset'][action] - raise error.Abort(msg, hint=hint) + raise error.NoMergeDestAbort(msg, hint=hint) else: branch = None for ctx in repo.set('roots(%ld::%ld)', sourceset, sourceset): if branch is not None and ctx.branch() != branch: msg, hint = msgdestmerge['multiplebranchessourceset'][action] - raise error.Abort(msg, hint=hint) + raise error.ManyMergeDestAbort(msg, hint=hint) branch = ctx.branch() bheads = repo.branchheads(branch) @@ -256,7 +256,7 @@ # instead. msg, hint = msgdestmerge['toomanyheads'][action] msg %= (branch, len(bheads) + 1) - raise error.Abort(msg, hint=hint) + raise error.ManyMergeDestAbort(msg, hint=hint) elif not nbhs: # Case B: There is no other anonymous heads # @@ -269,7 +269,7 @@ msg %= branch else: msg, hint = msgdestmerge['nootherheads'][action] - raise error.Abort(msg, hint=hint) + raise error.NoMergeDestAbort(msg, hint=hint) else: node = nbhs[0] assert node is not None
--- a/mercurial/error.py Mon Feb 08 22:58:15 2016 +0000 +++ b/mercurial/error.py Tue Feb 09 23:30:41 2016 +0000 @@ -72,6 +72,15 @@ class UpdateAbort(Abort): """Raised when an update is aborted for destination issue""" +class MergeDestAbort(Abort): + """Raised when an update is aborted for destination issues""" + +class NoMergeDestAbort(MergeDestAbort): + """Raised when an update is aborted because there is nothing to merge""" + +class ManyMergeDestAbort(MergeDestAbort): + """Raised when an update is aborted because destination is ambigious""" + class ResponseExpected(Abort): """Raised when an EOF is received for a prompt""" def __init__(self):