diff --git a/hgext/rebase.py b/hgext/rebase.py --- a/hgext/rebase.py +++ b/hgext/rebase.py @@ -819,6 +819,12 @@ inmemory = ui.configbool('rebase', 'experimental.inmemory') dryrun = opts.get('dry_run') stop = opts.get('stop') + if stop: + if opts.get('dry_run') or opts.get('confirm'): + raise error.Abort(_('cannot use --stop with --dry-run ' + 'or --confirm')) + if opts.get('abort') or opts.get('continue'): + raise error.Abort(_('cannot use --stop with --abort or --continue')) if dryrun: if opts.get('abort'): raise error.Abort(_('cannot specify both --dry-run and --abort')) @@ -852,7 +858,6 @@ if dryrun: return _dryrunrebase(ui, repo, opts) elif stop: - #todo: raise error for conflicting options rbsrt = rebaseruntime(repo, ui) with repo.wlock(), repo.lock(): rbsrt._finishrebase(stoprebase=True) diff --git a/tests/test-rebase-obsolete.t b/tests/test-rebase-obsolete.t --- a/tests/test-rebase-obsolete.t +++ b/tests/test-rebase-obsolete.t @@ -2002,3 +2002,22 @@ @ 0:cb9a9f314b8b test a +Test --stop raise errors with conflicting options: +================================================= + $ hg rebase -s 3 -d 5 + rebasing 3:055a42cdd887 "d" + merging d + warning: conflicts while merging d! (edit, then use 'hg resolve --mark') + unresolved conflicts (see hg resolve, then hg rebase --continue) + [1] + $ hg rebase --stop --dry-run + abort: cannot use --stop with --dry-run or --confirm + [255] + + $ hg rebase -s 3 -d 5 + abort: rebase in progress + (use 'hg rebase --continue' or 'hg rebase --abort') + [255] + $ hg rebase --stop --continue + abort: cannot use --stop with --abort or --continue + [255]