~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/msgeditor.py

[merge] jam-integration

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
"""Commit message editor support."""
21
21
 
22
22
import os
 
23
import errno
23
24
from subprocess import call
24
25
 
25
26
import bzrlib.config as config
32
33
    except KeyError:
33
34
        pass
34
35
 
35
 
    e = config.get_editor()
 
36
    e = config.GlobalConfig().get_editor()
36
37
    if e is not None:
37
38
        yield e
38
39
        
51
52
    """Try to execute an editor to edit the commit message."""
52
53
    for e in _get_editor():
53
54
        edargs = e.split(' ')
54
 
        x = call(edargs + [filename])
 
55
        try:
 
56
            x = call(edargs + [filename])
 
57
        except OSError, e:
 
58
           # ENOENT means no such editor
 
59
           if e.errno == errno.ENOENT:
 
60
               continue
 
61
           raise
55
62
        if x == 0:
56
63
            return True
57
64
        elif x == 127:
79
86
        ignoreline = "-- This line and the following will be ignored --"
80
87
        
81
88
    try:
82
 
        tmp_fileno, msgfilename = tempfile.mkstemp()
 
89
        tmp_fileno, msgfilename = tempfile.mkstemp(prefix='bzr_log.', dir=u'.')
83
90
        msgfile = os.close(tmp_fileno)
84
91
        if infotext is not None and infotext != "":
85
92
            hasinfo = True
127
134
        try: os.unlink(msgfilename)
128
135
        except IOError: pass
129
136
 
 
137
 
 
138
def make_commit_message_template(working_tree, specific_files):
 
139
    """Prepare a template file for a commit into a branch.
 
140
 
 
141
    Returns a unicode string containing the template.
 
142
    """
 
143
    # TODO: Should probably be given the WorkingTree not the branch
 
144
    #
 
145
    # TODO: make provision for this to be overridden or modified by a hook
 
146
    #
 
147
    # TODO: Rather than running the status command, should prepare a draft of
 
148
    # the revision to be committed, then pause and ask the user to
 
149
    # confirm/write a message.
 
150
    from StringIO import StringIO       # must be unicode-safe
 
151
    from bzrlib.status import show_status
 
152
    status_tmp = StringIO()
 
153
    show_status(working_tree.branch, specific_files=specific_files, to_file=status_tmp)
 
154
    return status_tmp.getvalue()