1
# Copyright (C) 2005-2010 Canonical Ltd
1
# Copyright (C) 2005-2011 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
59
60
def _run_editor(filename):
60
61
"""Try to execute an editor to edit the commit message."""
61
62
for candidate, candidate_source in _get_editor():
62
edargs = candidate.split(' ')
63
edargs = cmdline.split(candidate)
64
65
## mutter("trying editor: %r", (edargs +[filename]))
65
66
x = call(edargs + [filename])
150
151
edited_content = msg_transport.get_bytes(basename)
151
152
if edited_content == reference_content:
152
153
if not ui.ui_factory.confirm_action(
153
"Commit message was not edited, use anyway",
154
u"Commit message was not edited, use anyway",
154
155
"bzrlib.msgeditor.unchanged",
156
157
# Returning "" makes cmd_commit raise 'empty commit message
302
303
These are all empty initially.
305
self.create_hook(HookPoint('commit_message_template',
305
Hooks.__init__(self, "bzrlib.msgeditor", "hooks")
306
self.add_hook('set_commit_message',
307
"Set a fixed commit message. "
308
"set_commit_message is called with the "
309
"bzrlib.commit.Commit object (so you can also change e.g. revision "
310
"properties by editing commit.builder._revprops) and the message "
311
"so far. set_commit_message must return the message to use or None"
312
" if it should use the message editor as normal.", (2, 4))
313
self.add_hook('commit_message_template',
306
314
"Called when a commit message is being generated. "
307
315
"commit_message_template is called with the bzrlib.commit.Commit "
308
316
"object and the message that is known so far. "
309
317
"commit_message_template must return a new message to use (which "
310
"could be the same as it was given. When there are multiple "
318
"could be the same as it was given). When there are multiple "
311
319
"hooks registered for commit_message_template, they are chained "
312
320
"with the result from the first passed into the second, and so "
313
"on.", (1, 10), None))
316
324
hooks = MessageEditorHooks()
327
def set_commit_message(commit, start_message=None):
328
"""Sets the commit message.
329
:param commit: Commit object for the active commit.
330
:return: The commit message or None to continue using the message editor
333
for hook in hooks['set_commit_message']:
334
start_message = hook(commit, start_message)
319
338
def generate_commit_message_template(commit, start_message=None):
320
339
"""Generate a commit message template.