diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -565,10 +565,11 @@ def restorestatus(repo): def abort(repo, originalwd, target, state): 'Restore the repository to its original state' dstates = [s for s in state.values() if s != nullrev] - if [d for d in dstates if not repo[d].mutable()]: - repo.ui.warn(_("warning: immutable rebased changeset detected, " - "can't abort\n")) - return -1 + immutable = [d for d in dstates if not repo[d].mutable()] + if immutable: + raise util.Abort(_("can't abort rebase due to immutable changesets %s") + % ', '.join(str(repo[r]) for r in immutable), + hint=_('see hg help phases for details')) descendants = set() if dstates: diff --git a/tests/test-rebase-interruptions.t b/tests/test-rebase-interruptions.t --- a/tests/test-rebase-interruptions.t +++ b/tests/test-rebase-interruptions.t @@ -248,7 +248,8 @@ Change phase on B and B' Abort the rebasing: $ hg rebase --abort - warning: immutable rebased changeset detected, can't abort + abort: can't abort rebase due to immutable changesets 45396c49d53b + (see hg help phases for details) [255] $ hg tglogp