histedit: add checkunfinished support (issue3955) stable
authorMatt Mackall <mpm@selenic.com>
Wed, 24 Jul 2013 23:51:44 -0500
branchstable
changeset 19479 11664641fbad
parent 19478 e5a5790a3185
child 19480 7c0bb2b75aa8
histedit: add checkunfinished support (issue3955) The tests contain a couple corner cases where workarounds are now required. Strictly speaking, these are behavior regressions, but of an extremely obscure and marginal sort. Commits or updates in the middle of a histedit would have almost always been fairly serious user error.
hgext/histedit.py
tests/test-histedit-edit.t
tests/test-histedit-fold.t
--- a/hgext/histedit.py	Wed Jul 24 23:51:44 2013 -0500
+++ b/hgext/histedit.py	Wed Jul 24 23:51:44 2013 -0500
@@ -512,6 +512,7 @@
         os.unlink(os.path.join(repo.path, 'histedit-state'))
         return
     else:
+        cmdutil.checkunfinished(repo)
         cmdutil.bailifchanged(repo)
 
         topmost, empty = repo.dirstate.parents()
@@ -872,3 +873,6 @@
 
 def extsetup(ui):
     cmdutil.summaryhooks.add('histedit', summaryhook)
+    cmdutil.unfinishedstates.append(
+        ['histedit-state', False, _('histedit in progress'),
+         _("use 'hg histedit --continue' or 'hg histedit --abort'")])
--- a/tests/test-histedit-edit.t	Wed Jul 24 23:51:44 2013 -0500
+++ b/tests/test-histedit-edit.t	Wed Jul 24 23:51:44 2013 -0500
@@ -69,16 +69,12 @@
   $ hg id -n
   3+
   $ hg up 0
-  0 files updated, 0 files merged, 3 files removed, 0 files unresolved
-  $ HGEDITOR='echo foobaz > ' hg histedit --continue
-  abort: 055a42cdd887 is not an ancestor of working directory
-  (update to 055a42cdd887 or descendant and run "hg histedit --continue" again)
+  abort: histedit in progress
+  (use 'hg histedit --continue' or 'hg histedit --abort')
   [255]
-  $ hg up 3
-  3 files updated, 0 files merged, 0 files removed, 0 files unresolved
 
-commit, then edit the revision
-  $ hg ci -m 'wat'
+commit, then edit the revision (temporarily disable histedit to allow commit)
+  $ hg ci -m 'wat' --config 'extensions.histedit=!'
   created new head
   $ echo a > e
   $ HGEDITOR='echo foobaz > ' hg histedit --continue 2>&1 | fixbundle
--- a/tests/test-histedit-fold.t	Wed Jul 24 23:51:44 2013 -0500
+++ b/tests/test-histedit-fold.t	Wed Jul 24 23:51:44 2013 -0500
@@ -214,7 +214,7 @@
   > 5
   > EOF
   $ hg resolve --mark file
-  $ hg commit -m '+5.2'
+  $ hg commit -m '+5.2' --config 'extensions.histedit=!'
   created new head
   $ echo 6 >> file
   $ HGEDITOR=cat hg histedit --continue