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.
--- a/hgext/histedit.py Fri Apr 03 15:18:34 2015 -0700
+++ b/hgext/histedit.py Sat Apr 04 11:24:48 2015 -0700
@@ -1030,8 +1030,9 @@
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")
--- a/tests/test-histedit-edit.t Fri Apr 03 15:18:34 2015 -0700
+++ b/tests/test-histedit-edit.t Sat Apr 04 11:24:48 2015 -0700
@@ -87,8 +87,8 @@
[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