/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/msgeditor.py

  • Committer: Vincent Ladeuil
  • Date: 2011-07-06 09:22:00 UTC
  • mfrom: (6008 +trunk)
  • mto: (6012.1.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 6013.
  • Revision ID: v.ladeuil+lp@free.fr-20110706092200-7iai2mwzc0sqdsvf
MergingĀ inĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005-2011 Canonical Ltd
2
2
#
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
23
23
import sys
24
24
 
25
25
from bzrlib import (
 
26
    cmdline,
26
27
    config,
27
28
    osutils,
28
29
    trace,
30
31
    ui,
31
32
    )
32
33
from bzrlib.errors import BzrError, BadCommitMessageEncoding
33
 
from bzrlib.hooks import HookPoint, Hooks
 
34
from bzrlib.hooks import Hooks
34
35
 
35
36
 
36
37
def _get_editor():
40
41
    except KeyError:
41
42
        pass
42
43
 
43
 
    e = config.GlobalConfig().get_editor()
 
44
    e = config.GlobalStack().get('editor')
44
45
    if e is not None:
45
46
        yield e, config.config_filename()
46
47
 
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)
63
64
        try:
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",
155
156
                {}):
156
157
                # Returning "" makes cmd_commit raise 'empty commit message
301
302
 
302
303
        These are all empty initially.
303
304
        """
304
 
        Hooks.__init__(self)
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))
 
321
            "on.", (1, 10))
314
322
 
315
323
 
316
324
hooks = MessageEditorHooks()
317
325
 
318
326
 
 
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
 
331
    """
 
332
    start_message = None
 
333
    for hook in hooks['set_commit_message']:
 
334
        start_message = hook(commit, start_message)
 
335
    return start_message
 
336
 
 
337
 
319
338
def generate_commit_message_template(commit, start_message=None):
320
339
    """Generate a commit message template.
321
340