diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -455,6 +455,9 @@ def histedit(ui, repo, *parent, **opts): keep = opts.get('keep', False) revs = between(repo, parent, topmost, keep) + if not revs: + ui.warn(_('nothing to edit\n')) + return 1 ctxs = [repo[r] for r in revs] rules = opts.get('commands', '') @@ -588,7 +591,7 @@ def between(repo, old, new, keep): When keep is false, the specified set can't have children.""" ctxs = list(repo.set('%n::%n', old, new)) - if not keep: + if ctxs and not keep: if repo.revs('(%ld::) - (%ld + hidden())', ctxs, ctxs): raise util.Abort(_('cannot edit history that would orphan nodes')) root = min(ctxs) diff --git a/tests/test-histedit-revspec.t b/tests/test-histedit-revspec.t --- a/tests/test-histedit-revspec.t +++ b/tests/test-histedit-revspec.t @@ -60,3 +60,10 @@ Run a dummy edit to make sure we get tip # 0 files updated, 0 files merged, 0 files removed, 0 files unresolved +Run on a revision not ancestors of the current working directory. + + $ hg up 2 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg histedit -r 4 + nothing to edit + [1]