comparison mercurial/cmdutil.py @ 21999:6ce282ed801e

cmdutil: introduce 'editform' to distinguish the purpose of commit text editing This information will be used to switch '[committemplate] changeset' definition according to its purpose in the subsequent patch. This information also makes it easier to hook commit text editing only in the specific cases.
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
date Sat, 02 Aug 2014 21:46:26 +0900
parents 739095270f48
children 41e969cb9468
comparison
equal deleted inserted replaced
21998:739095270f48 21999:6ce282ed801e
107 except IOError, inst: 107 except IOError, inst:
108 raise util.Abort(_("can't read commit message '%s': %s") % 108 raise util.Abort(_("can't read commit message '%s': %s") %
109 (logfile, inst.strerror)) 109 (logfile, inst.strerror))
110 return message 110 return message
111 111
112 def getcommiteditor(edit=False, finishdesc=None, extramsg=None, **opts): 112 def getcommiteditor(edit=False, finishdesc=None, extramsg=None,
113 editform='', **opts):
113 """get appropriate commit message editor according to '--edit' option 114 """get appropriate commit message editor according to '--edit' option
114 115
115 'finishdesc' is a function to be called with edited commit message 116 'finishdesc' is a function to be called with edited commit message
116 (= 'description' of the new changeset) just after editing, but 117 (= 'description' of the new changeset) just after editing, but
117 before checking empty-ness. It should return actual text to be 118 before checking empty-ness. It should return actual text to be
119 storing. 120 storing.
120 121
121 'extramsg' is a extra message to be shown in the editor instead of 122 'extramsg' is a extra message to be shown in the editor instead of
122 'Leave message empty to abort commit' line. 'HG: ' prefix and EOL 123 'Leave message empty to abort commit' line. 'HG: ' prefix and EOL
123 is automatically added. 124 is automatically added.
125
126 'editform' is a dot-separated list of names, to distinguish
127 the purpose of commit text editing.
124 128
125 'getcommiteditor' returns 'commitforceeditor' regardless of 129 'getcommiteditor' returns 'commitforceeditor' regardless of
126 'edit', if one of 'finishdesc' or 'extramsg' is specified, because 130 'edit', if one of 'finishdesc' or 'extramsg' is specified, because
127 they are specific for usage in MQ. 131 they are specific for usage in MQ.
128 """ 132 """
129 if edit or finishdesc or extramsg: 133 if edit or finishdesc or extramsg:
130 return lambda r, c, s: commitforceeditor(r, c, s, 134 return lambda r, c, s: commitforceeditor(r, c, s,
131 finishdesc=finishdesc, 135 finishdesc=finishdesc,
132 extramsg=extramsg) 136 extramsg=extramsg,
137 editform=editform)
138 elif editform:
139 return lambda r, c, s: commiteditor(r, c, s, editform=editform)
133 else: 140 else:
134 return commiteditor 141 return commiteditor
135 142
136 def loglimit(opts): 143 def loglimit(opts):
137 """get the log limit according to option -l/--limit""" 144 """get the log limit according to option -l/--limit"""
2173 if newid is None: 2180 if newid is None:
2174 repo.dirstate.invalidate() 2181 repo.dirstate.invalidate()
2175 lockmod.release(lock, wlock) 2182 lockmod.release(lock, wlock)
2176 return newid 2183 return newid
2177 2184
2178 def commiteditor(repo, ctx, subs): 2185 def commiteditor(repo, ctx, subs, editform=''):
2179 if ctx.description(): 2186 if ctx.description():
2180 return ctx.description() 2187 return ctx.description()
2181 return commitforceeditor(repo, ctx, subs) 2188 return commitforceeditor(repo, ctx, subs, editform=editform)
2182 2189
2183 def commitforceeditor(repo, ctx, subs, finishdesc=None, extramsg=None): 2190 def commitforceeditor(repo, ctx, subs, finishdesc=None, extramsg=None,
2191 editform=''):
2184 if not extramsg: 2192 if not extramsg:
2185 extramsg = _("Leave message empty to abort commit.") 2193 extramsg = _("Leave message empty to abort commit.")
2186 tmpl = repo.ui.config('committemplate', 'changeset', '').strip() 2194 tmpl = repo.ui.config('committemplate', 'changeset', '').strip()
2187 if tmpl: 2195 if tmpl:
2188 committext = buildcommittemplate(repo, ctx, subs, extramsg, tmpl) 2196 committext = buildcommittemplate(repo, ctx, subs, extramsg, tmpl)