histedit: support editing of the first commit (
issue3767)
--- 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]
--- 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)