changeset 31533:6f0b7475cf9a

histedit: use safecleanupnode in _aborthistedit (issue5500) Now nobody in histedit calls the unsafe cleanupnode directly.
author Jun Wu <quark@fb.com>
date Mon, 13 Mar 2017 22:22:18 -0700
parents 9d55494bd0db
children 2b599f5468a4
files hgext/histedit.py tests/test-histedit-obsolete.t
diffstat 2 files changed, 48 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/hgext/histedit.py	Mon Mar 13 22:19:06 2017 -0700
+++ b/hgext/histedit.py	Mon Mar 13 22:22:18 2017 -0700
@@ -1209,8 +1209,8 @@
         if repo.unfiltered().revs('parents() and (%n  or %ln::)',
                                 state.parentctxnode, leafs | tmpnodes):
             hg.clean(repo, state.topmost, show_stats=True, quietempty=True)
-        cleanupnode(ui, repo, 'created', tmpnodes)
-        cleanupnode(ui, repo, 'temp', leafs)
+        safecleanupnode(ui, repo, 'created', tmpnodes)
+        safecleanupnode(ui, repo, 'temp', leafs)
     except Exception:
         if state.inprogress():
             ui.warn(_('warning: encountered an exception during histedit '
--- a/tests/test-histedit-obsolete.t	Mon Mar 13 22:19:06 2017 -0700
+++ b/tests/test-histedit-obsolete.t	Mon Mar 13 22:22:18 2017 -0700
@@ -503,3 +503,49 @@
   abort: cannot edit history that contains merges
   [255]
   $ cd ..
+
+Abort
+-------------------------------------------
+
+  $ cp -R base abort
+  $ cd abort
+  $ hg histedit -r 'b449568bf7fc' --commands - << EOF
+  > pick b449568bf7fc 13 f
+  > pick 7395e1ff83bd 15 h
+  > pick 6b70183d2492 14 g
+  > pick b605fb7503f2 16 i
+  > pick 3a6c53ee7f3d 17 j
+  > edit ee118ab9fa44 18 k
+  > EOF
+  Editing (ee118ab9fa44), you may commit or record as needed now.
+  (hg histedit --continue to resume)
+  [1]
+
+  $ hg histedit --abort
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+  $ hg log -G --hidden -r '::. + .:'
+  x  22:44ca09d59ae4 (secret) j
+  |
+  x  21:31747692a644 (secret) i
+  |
+  x  20:9985cd4f21fa (draft) g
+  |
+  x  19:4dc06258baa6 (draft) h
+  |
+  | @  18:ee118ab9fa44 (secret) k
+  | |
+  | o  17:3a6c53ee7f3d (secret) j
+  | |
+  | o  16:b605fb7503f2 (secret) i
+  | |
+  | o  15:7395e1ff83bd (draft) h
+  | |
+  | o  14:6b70183d2492 (draft) g
+  |/
+  o  13:b449568bf7fc (draft) f
+  |
+  o  12:40db8afa467b (public) c
+  |
+  o  0:cb9a9f314b8b (public) a
+