histedit: fix preventing strips during histedit
authorDurham Goode <durham@fb.com>
Sat, 04 Apr 2015 11:24:48 -0700
changeset 24626 e767f5aba810
parent 24625 2cebf17c0fcc
child 24627 f33236c9b025
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.
hgext/histedit.py
tests/test-histedit-edit.t
--- 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