# HG changeset patch # User Bryan O'Sullivan # Date 1365807678 25200 # Node ID 79580b3140cd7376c16395236ca24f36d2baa99c # Parent 4e1ae55e63ef13bbee13256f236d93efe817be69 histedit: support editing of the first commit (issue3767) diff -r 4e1ae55e63ef -r 79580b3140cd hgext/histedit.py --- a/hgext/histedit.py Fri Apr 12 17:00:42 2013 -0400 +++ b/hgext/histedit.py Fri Apr 12 16:01:18 2013 -0700 @@ -580,14 +580,15 @@ # 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 -r 4e1ae55e63ef -r 79580b3140cd tests/test-histedit-edit.t --- a/tests/test-histedit-edit.t Fri Apr 12 17:00:42 2013 -0400 +++ b/tests/test-histedit-edit.t Fri Apr 12 16:01:18 2013 -0700 @@ -209,3 +209,16 @@ [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)