[PATCH 4 of 5] histedit: suggest "histedit --abort" for inconsistent histedit status

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Mon Aug 26 02:41:51 CDT 2013


# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1377501081 -32400
#      Mon Aug 26 16:11:21 2013 +0900
# Node ID 530564f737e2bf5111f769f944f6d0f7b6942def
# Parent  c0dc67257c631ea0b709b189271bfd022917c022
histedit: suggest "histedit --abort" for inconsistent histedit status

This patch changes the hint message for inconsistent histedit status,
because Mercurial 2.7 or later prevents from updating the working
directory before "histedit --abort", if histedit is in progress.

diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -628,8 +628,8 @@
             # `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
+            hint = _('this inconsistent histedit should be aborted by '
+                     '"histedit --abort"')
             raise util.Abort(msg % parentctx, hint=hint)
         newchildren.pop(0)  # remove parentctxnode
     # Commit dirty working directory if necessary
diff --git a/tests/test-histedit-arguments.t b/tests/test-histedit-arguments.t
--- a/tests/test-histedit-arguments.t
+++ b/tests/test-histedit-arguments.t
@@ -70,6 +70,37 @@
   [255]
   $ hg up --quiet
 
+Run on a revision not descendants of the initial parent
+--------------------------------------------------------------------
+
+this should occur only when there is (maybe forgotten) histedit-state
+left by hg earlier than 2.7, because 2.7 or later prevents users from
+updating without aborting.
+
+  $ HGEDITOR=cat hg histedit -r 4 --commands - << EOF
+  > edit 08d98a8350f3 4 five
+  > EOF
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  reverting alpha
+  Make changes as needed, you may commit or record as needed now.
+  When you are finished, run hg histedit --continue to resume.
+  [1]
+
+this emulates "hg update" before "hg histedit --abort" with hg earlier
+than 2.7
+
+  $ mv .hg/histedit-state .hg/histedit-state.back
+  $ hg update --quiet --clean 2
+  $ mv .hg/histedit-state.back .hg/histedit-state
+
+  $ hg histedit --continue
+  abort: c8e68270e35a is not an ancestor of working directory
+  (this inconsistent histedit should be aborted by "histedit --abort")
+  [255]
+
+  $ hg histedit --abort
+  $ hg update --quiet --clean
+
 Test that missing revisions are detected
 ---------------------------------------
 


More information about the Mercurial-devel mailing list