[PATCH STABLE] histedit: fix keep during --continue

Durham Goode durham at fb.com
Thu May 28 22:49:39 CDT 2015


# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1432870220 25200
#      Thu May 28 20:30:20 2015 -0700
# Branch stable
# Node ID 170ac339a0871ff4c33ed8e6a0eb15f83286db0c
# Parent  884ef09cf658cf565c056ff75e675665fe520044
histedit: fix keep during --continue

The --keep option was being serialized to the state file, but it wasn't actually
being used when running a histedit --continue. This fixes that.

diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -741,7 +741,7 @@ def _histedit(ui, repo, state, *freeargs
 
 
     replacements = []
-    keep = opts.get('keep', False)
+    state.keep = opts.get('keep', False)
 
     # rebuild state
     if goal == 'continue':
@@ -810,7 +810,7 @@ def _histedit(ui, repo, state, *freeargs
                     'exactly one common root'))
             root = rr[0].node()
 
-        revs = between(repo, root, topmost, keep)
+        revs = between(repo, root, topmost, state.keep)
         if not revs:
             raise util.Abort(_('%s is not an ancestor of working directory') %
                              node.short(root))
@@ -834,7 +834,6 @@ def _histedit(ui, repo, state, *freeargs
 
         state.parentctxnode = parentctxnode
         state.rules = rules
-        state.keep = keep
         state.topmost = topmost
         state.replacements = replacements
 
@@ -870,7 +869,7 @@ def _histedit(ui, repo, state, *freeargs
                     for n in succs[1:]:
                         ui.debug(m % node.short(n))
 
-    if not keep:
+    if not state.keep:
         if mapping:
             movebookmarks(ui, repo, mapping, state.topmost, ntm)
             # TODO update mq state
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
@@ -295,3 +295,32 @@ Test that trimming description using mul
   #  m, mess = edit message without changing commit content
   #
   0 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+Test --continue with --keep
+
+  $ hg strip -q -r . --config extensions.strip=
+  $ hg histedit '.^' -q --keep --commands - << EOF
+  > edit eb57da33312f 2 three
+  > pick f3cfcca30c44 4 x
+  > EOF
+  Make changes as needed, you may commit or record as needed now.
+  When you are finished, run hg histedit --continue to resume.
+  [1]
+  $ echo edit >> alpha
+  $ hg histedit -q --continue
+  $ hg log -G -T '{rev}:{node|short} {desc}'
+  @  6:8fda0c726bf2 x
+  |
+  o  5:63379946892c three
+  |
+  | o  4:f3cfcca30c44 x
+  | |
+  | | o  3:2a30f3cfee78 four
+  | |/   ***
+  | |    five
+  | o  2:eb57da33312f three
+  |/
+  o  1:579e40513370 two
+  |
+  o  0:6058cbb6cfd7 one
+  


More information about the Mercurial-devel mailing list