hgext/histedit.py
changeset 27202 2226cd4f32ed
parent 27201 dcb536d2e138
child 27203 b6a0f0895a25
--- a/hgext/histedit.py	Wed Dec 02 12:19:01 2015 -0800
+++ b/hgext/histedit.py	Wed Dec 02 12:19:01 2015 -0800
@@ -346,13 +346,18 @@
     def fromrule(cls, state, rule):
         """Parses the given rule, returning an instance of the histeditaction.
         """
-        repo = state.repo
         rulehash = rule.strip().split(' ', 1)[0]
+        return cls(state, node.bin(rulehash))
+
+    def verify(self):
+        """ Verifies semantic correctness of the rule"""
+        repo = self.repo
+        ha = node.hex(self.node)
         try:
-            node = repo[rulehash].node()
+            self.node = repo[ha].node()
         except error.RepoError:
-            raise error.Abort(_('unknown changeset %s listed') % rulehash[:12])
-        return cls(state, node)
+            raise error.Abort(_('unknown changeset %s listed')
+                              % ha[:12])
 
     def constraints(self):
         """Return a set of constrains that this action should be verified for
@@ -1175,6 +1180,7 @@
         if verb not in actiontable or verb.startswith('_'):
             raise error.Abort(_('unknown action "%s"') % verb)
         action = actiontable[verb].fromrule(state, rest)
+        action.verify()
         constraints = action.constraints()
         for constraint in constraints:
             if constraint not in _constraints.known():