~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/msgeditor.py

  • Committer: INADA Naoki
  • Date: 2011-05-14 09:58:36 UTC
  • mfrom: (5830.2.22 i18n-msgextract)
  • mto: This revision was merged to the branch mainline in revision 5891.
  • Revision ID: songofacandy@gmail.com-20110514095836-38l651fp8bmb4bni
merge from i18n-msgextract

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
 
17
 
17
18
"""Commit message editor support."""
18
19
 
19
 
from __future__ import absolute_import
20
 
 
21
20
import codecs
22
21
import os
23
22
from subprocess import call
42
41
    except KeyError:
43
42
        pass
44
43
 
45
 
    e = config.GlobalStack().get('editor')
 
44
    e = config.GlobalConfig().get_editor()
46
45
    if e is not None:
47
46
        yield e, config.config_filename()
48
47
 
145
144
        if not msgfilename:
146
145
            return None
147
146
        basename = osutils.basename(msgfilename)
148
 
        msg_transport = transport.get_transport_from_path(osutils.dirname(msgfilename))
 
147
        msg_transport = transport.get_transport(osutils.dirname(msgfilename))
149
148
        reference_content = msg_transport.get_bytes(basename)
150
149
        if not _run_editor(msgfilename):
151
150
            return None
152
151
        edited_content = msg_transport.get_bytes(basename)
153
152
        if edited_content == reference_content:
154
153
            if not ui.ui_factory.confirm_action(
155
 
                u"Commit message was not edited, use anyway",
 
154
                "Commit message was not edited, use anyway",
156
155
                "bzrlib.msgeditor.unchanged",
157
156
                {}):
158
157
                # Returning "" makes cmd_commit raise 'empty commit message
304
303
        These are all empty initially.
305
304
        """
306
305
        Hooks.__init__(self, "bzrlib.msgeditor", "hooks")
307
 
        self.add_hook('set_commit_message',
308
 
            "Set a fixed commit message. "
309
 
            "set_commit_message is called with the "
310
 
            "bzrlib.commit.Commit object (so you can also change e.g. revision "
311
 
            "properties by editing commit.builder._revprops) and the message "
312
 
            "so far. set_commit_message must return the message to use or None"
313
 
            " if it should use the message editor as normal.", (2, 4))
314
306
        self.add_hook('commit_message_template',
315
307
            "Called when a commit message is being generated. "
316
308
            "commit_message_template is called with the bzrlib.commit.Commit "
317
309
            "object and the message that is known so far. "
318
310
            "commit_message_template must return a new message to use (which "
319
 
            "could be the same as it was given). When there are multiple "
 
311
            "could be the same as it was given. When there are multiple "
320
312
            "hooks registered for commit_message_template, they are chained "
321
313
            "with the result from the first passed into the second, and so "
322
314
            "on.", (1, 10))
325
317
hooks = MessageEditorHooks()
326
318
 
327
319
 
328
 
def set_commit_message(commit, start_message=None):
329
 
    """Sets the commit message.
330
 
    :param commit: Commit object for the active commit.
331
 
    :return: The commit message or None to continue using the message editor
332
 
    """
333
 
    start_message = None
334
 
    for hook in hooks['set_commit_message']:
335
 
        start_message = hook(commit, start_message)
336
 
    return start_message
337
 
 
338
 
 
339
320
def generate_commit_message_template(commit, start_message=None):
340
321
    """Generate a commit message template.
341
322