[PATCH 1 of 3] histedit: fix preventing strips during histedit
Durham Goode
durham at fb.com
Mon Apr 6 02:30:14 UTC 2015
# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1428171888 25200
# Sat Apr 04 11:24:48 2015 -0700
# Node ID 0a1ead2c3d2c81db0acd31a2d36d3fe4153aeb0f
# Parent 4a4018831d2ebc3c9cae9c6613e6a2497b4f0993
histedit: fix preventing strips during histedit
We were trying to prevent strips of important nodes during histedit, but the
check was actually comparing the short hashes in the rules to the exact value
the user typed in, so it only ever worked if the user typed a 12 character hash.
diff --git a/hgext/histedit.py b/hgext/histedit.py
--- a/hgext/histedit.py
+++ b/hgext/histedit.py
@@ -1030,8 +1030,9 @@ def stripwrapper(orig, ui, repo, nodelis
if os.path.exists(os.path.join(repo.path, 'histedit-state')):
state = histeditstate(repo)
state.read()
- histedit_nodes = set([ctx for (action, ctx) in state.rules])
- strip_nodes = set([repo[n].hex() for n in nodelist])
+ histedit_nodes = set([repo[rulehash].node() for (action, rulehash)
+ in state.rules if rulehash in repo])
+ strip_nodes = set([repo[n].node() for n in nodelist])
common_nodes = histedit_nodes & strip_nodes
if common_nodes:
raise util.Abort(_("histedit in progress, can't strip %s")
diff --git a/tests/test-histedit-edit.t b/tests/test-histedit-edit.t
--- a/tests/test-histedit-edit.t
+++ b/tests/test-histedit-edit.t
@@ -87,8 +87,8 @@ Go at a random point and try to continue
[255]
Try to delete necessary commit
- $ hg strip -r 652413bf663e
- abort: histedit in progress, can't strip 363532343133
+ $ hg strip -r 652413b
+ abort: histedit in progress, can't strip 652413bf663e
[255]
commit, then edit the revision
More information about the Mercurial-devel
mailing list