histedit: use safecleanupnode in _aborthistedit (
issue5500)
Now nobody in histedit calls the unsafe cleanupnode directly.
--- 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
+