histedit: pass 'editform' argument to 'cmdutil.getcommiteditor'
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sat, 02 Aug 2014 21:46:26 +0900
changeset 22002 a44b7b6f3cd7
parent 22001 135176a198d0
child 22003 cbbd957358ff
histedit: pass 'editform' argument to 'cmdutil.getcommiteditor' This patch passes 'editform' argument according to the format below: EXTENSION[.COMMAND][.ROUTE] - EXTENSION: name of extension - COMMAND: name of command, if there are two or more commands in EXTENSION - ROUTE: name of route, if there are two or more routes for COMMAND In this patch: - 'edit', 'fold', 'mess' and 'pick' are used as COMMAND - ROUTE is omitted 'histedit.pick' case is very rare, but possible if: - target revision causes conflict at merging (= requires '--continue'), and - description of it is empty ('hg commit -m " "' can create such one) In the code path for 'histedit --continue' (the last patch hunk), 'canonaction' doesn't contain the entry for 'fold', because 'fold' action causes: - using temporary commit message forcibly, and - making 'editopt' False always (= omit editor invocation if commit message is specified)
hgext/histedit.py
--- a/hgext/histedit.py	Sat Aug 02 21:46:26 2014 +0900
+++ b/hgext/histedit.py	Sat Aug 02 21:46:26 2014 +0900
@@ -293,6 +293,7 @@
     extra = commitopts.get('extra')
 
     parents = (first.p1().node(), first.p2().node())
+    editor = cmdutil.getcommiteditor(edit=True, editform='histedit.fold')
     new = context.memctx(repo,
                          parents=parents,
                          text=message,
@@ -301,7 +302,7 @@
                          user=user,
                          date=date,
                          extra=extra,
-                         editor=cmdutil.getcommiteditor(edit=True))
+                         editor=editor)
     return repo.commitctx(new)
 
 def pick(ui, repo, ctx, ha, opts):
@@ -405,9 +406,10 @@
             _('Fix up the change and run hg histedit --continue'))
     message = oldctx.description()
     commit = commitfuncfor(repo, oldctx)
+    editor = cmdutil.getcommiteditor(edit=True, editform='histedit.mess')
     new = commit(text=message, user=oldctx.user(), date=oldctx.date(),
                  extra=oldctx.extra(),
-                 editor=cmdutil.getcommiteditor(edit=True))
+                 editor=editor)
     newctx = repo[new]
     if oldctx.node() != newctx.node():
         return newctx, [(oldctx.node(), (new,))]
@@ -684,7 +686,9 @@
         else:
             message = ctx.description()
         editopt = action in ('e', 'edit', 'm', 'mess')
-        editor = cmdutil.getcommiteditor(edit=editopt)
+        canonaction = {'e': 'edit', 'm': 'mess', 'p': 'pick'}
+        editform = 'histedit.%s' % canonaction.get(action, action)
+        editor = cmdutil.getcommiteditor(edit=editopt, editform=editform)
         commit = commitfuncfor(repo, ctx)
         new = commit(text=message, user=ctx.user(),
                      date=ctx.date(), extra=ctx.extra(),