~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/msgeditor.py

  • Committer: James Westby
  • Date: 2007-02-03 13:58:27 UTC
  • mto: (2304.1.1 jam-integration)
  • mto: This revision was merged to the branch mainline in revision 2305.
  • Revision ID: jw+debian@jameswestby.net-20070203135827-15twzpv89r1uygks
Add a way to specify a template commit message.

Add start_message to the edit_commit_message function. This adds the text
above the separator so that it will not be removed after the user has edited.
Allows a template commit message to be specified. It however does nothing to
make it easy to actually hook in and set that.

Show diffs side-by-side

added added

removed removed

Lines of Context:
80
80
    { 'bar' : '-' * 14, 'msg' : 'This line and the following will be ignored' }
81
81
 
82
82
 
83
 
def edit_commit_message(infotext, ignoreline=DEFAULT_IGNORE_LINE):
 
83
def edit_commit_message(infotext, ignoreline=DEFAULT_IGNORE_LINE,
 
84
                        start_message=None):
84
85
    """Let the user edit a commit message in a temp file.
85
86
 
86
87
    This is run if they don't give a message or
90
91
        Text to be displayed at bottom of message for
91
92
        the user's reference; currently similar to
92
93
        'bzr status'.
 
94
 
 
95
    ignoreline:
 
96
        The separator to use above the infotext.
 
97
 
 
98
    start_message:
 
99
        The text to place above the separator, if any. This will not be
 
100
        removed from the message after the user has edited it.
93
101
    """
94
102
    import tempfile
95
103
 
97
105
    try:
98
106
        tmp_fileno, msgfilename = tempfile.mkstemp(prefix='bzr_log.', dir=u'.')
99
107
        msgfile = os.close(tmp_fileno)
 
108
        havefile = False
 
109
        if start_message is not None and start_message != "":
 
110
            havefile = True
 
111
            msgfile = file(msgfilename, "w")
 
112
            msgfile.write("%s\n" % start_message.encode(
 
113
                                     bzrlib.user_encoding, 'replace'))
100
114
        if infotext is not None and infotext != "":
101
115
            hasinfo = True
102
 
            msgfile = file(msgfilename, "w")
 
116
            if not havefile:
 
117
              msgfile = file(msgfilename, "w")
 
118
              havefile = True
103
119
            msgfile.write("\n\n%s\n\n%s" % (ignoreline,
104
120
                infotext.encode(bzrlib.user_encoding, 'replace')))
105
 
            msgfile.close()
106
121
        else:
107
122
            hasinfo = False
108
123
 
 
124
        if havefile:
 
125
          msgfile.close()
 
126
 
109
127
        if not _run_editor(msgfilename):
110
128
            return None
111
129