histedit: convert edit action into a class
authorDurham Goode <durham@fb.com>
Sat, 04 Apr 2015 01:00:51 -0700
changeset 24770 facdb20e60e9
parent 24769 e875b94dc94c
child 24771 3133e246c912
histedit: convert edit action into a class This converts the edit action into a histeditclass instance, as part of an ongoing effort to refactor histedit for maintainability and robustness.
hgext/histedit.py
--- a/hgext/histedit.py	Sat Apr 04 00:42:32 2015 -0700
+++ b/hgext/histedit.py	Sat Apr 04 01:00:51 2015 -0700
@@ -496,15 +496,19 @@
 
         return super(pick, self).run()
 
-def edit(ui, state, ha, opts):
-    repo, ctxnode = state.repo, state.parentctxnode
-    ctx = repo[ctxnode]
-    oldctx = repo[ha]
-    hg.update(repo, ctx.node())
-    applychanges(ui, repo, oldctx, opts)
-    raise error.InterventionRequired(
-        _('Make changes as needed, you may commit or record as needed now.\n'
-          'When you are finished, run hg histedit --continue to resume.'))
+class edit(histeditaction):
+    def run(self):
+        repo = self.repo
+        rulectx = repo[self.node]
+        hg.update(repo, self.state.parentctxnode)
+        applychanges(repo.ui, repo, rulectx, {})
+        raise error.InterventionRequired(
+            _('Make changes as needed, you may commit or record as needed '
+              'now.\nWhen you are finished, run hg histedit --continue to '
+              'resume.'))
+
+    def commiteditor(self):
+        return cmdutil.getcommiteditor(edit=True, editform='histedit.edit')
 
 def rollup(ui, state, ha, opts):
     rollupopts = opts.copy()
@@ -907,10 +911,7 @@
                 message = 'fold-temp-revision %s' % currentnode[:12]
             else:
                 message = ctx.description()
-            editopt = action in ('e', 'edit')
-            canonaction = {'e': 'edit'}
-            editform = 'histedit.%s' % canonaction.get(action, action)
-            editor = cmdutil.getcommiteditor(edit=editopt, editform=editform)
+            editor = cmdutil.getcommiteditor()
             commit = commitfuncfor(repo, ctx)
             new = commit(text=message, user=ctx.user(), date=ctx.date(),
                          extra=ctx.extra(), editor=editor)