histedit: backout changeset
6f0b7475cf9a
Before
6f0b7475cf9a, histedit (like rebase) was only creating markers on final
success from the old-rewritten node to the newly created nodes (as of before
6f0b7475cf9a). In case of abort the aborted attempt were stripped to restore the
repository in its state prior to the attempt.
This use of strip was on purpose. Using markers in this case introduces various
issues. The main one is that keeping the partial result of histedit as obsolete
prevents us to recreates the same nodes in a second attempt. The same operation
will lead to an identical results, using an identical node that already exists
in the repository as obsolete.
To conclude, we cannot and should not switch to obsolescence markers creation on
histedit --abort and we backout
6f0b7475cf9a. A test to catch this class of
issue will be introduced in the next changeset.
--- a/hgext/histedit.py Sun Mar 26 15:34:39 2017 +0200
+++ b/hgext/histedit.py Sun Mar 26 15:46:09 2017 +0200
@@ -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)
- safecleanupnode(ui, repo, 'created', tmpnodes)
- safecleanupnode(ui, repo, 'temp', leafs)
+ cleanupnode(ui, repo, 'created', tmpnodes)
+ cleanupnode(ui, repo, 'temp', leafs)
except Exception:
if state.inprogress():
ui.warn(_('warning: encountered an exception during histedit '
--- a/tests/test-histedit-obsolete.t Sun Mar 26 15:34:39 2017 +0200
+++ b/tests/test-histedit-obsolete.t Sun Mar 26 15:46:09 2017 +0200
@@ -503,49 +503,3 @@
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
-