diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -580,14 +580,15 @@ def bootstrapcontinue(ui, repo, parentct # note: does not take non linear new change in account (but previous # implementation didn't used them anyway (issue3655) newchildren = [c.node() for c in repo.set('(%d::.)', parentctx)] - if not newchildren: - # `parentctxnode` should match but no result. This means that - # currentnode is not a descendant from parentctxnode. - msg = _('%s is not an ancestor of working directory') - hint = _('update to %s or descendant and run "hg histedit ' - '--continue" again') % parentctx - raise util.Abort(msg % parentctx, hint=hint) - newchildren.pop(0) # remove parentctxnode + if parentctx.node() != node.nullid: + if not newchildren: + # `parentctxnode` should match but no result. This means that + # currentnode is not a descendant from parentctxnode. + msg = _('%s is not an ancestor of working directory') + hint = _('update to %s or descendant and run "hg histedit ' + '--continue" again') % parentctx + raise util.Abort(msg % parentctx, hint=hint) + newchildren.pop(0) # remove parentctxnode # Commit dirty working directory if necessary new = None m, a, r, d = repo.status()[:4] diff --git a/tests/test-histedit-edit.t b/tests/test-histedit-edit.t --- a/tests/test-histedit-edit.t +++ b/tests/test-histedit-edit.t @@ -209,3 +209,16 @@ rollback should not work after a histedi [1] $ cd .. + $ hg clone -qr0 r r0 + $ cd r0 + $ echo edit cb9a9f314b8b a > $EDITED + $ hg phase -fdr0 + $ HGEDITOR="cat \"$EDITED\" > " hg histedit 0 2>&1 + 0 files updated, 0 files merged, 1 files removed, 0 files unresolved + adding a + abort: Make changes as needed, you may commit or record as needed now. + When you are finished, run hg histedit --continue to resume. + [255] + $ HGEDITOR=true hg histedit --continue + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + saved backup bundle to $TESTTMP/r0/.hg/strip-backup/cb9a9f314b8b-backup.hg (glob)