changeset 24626:e767f5aba810

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.
author Durham Goode <durham@fb.com>
date Sat, 04 Apr 2015 11:24:48 -0700
parents 2cebf17c0fcc
children f33236c9b025
files hgext/histedit.py tests/test-histedit-edit.t
diffstat 2 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- 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