~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

  • Committer: John Arbash Meinel
  • Date: 2006-12-01 19:41:16 UTC
  • mfrom: (2158 +trunk)
  • mto: This revision was merged to the branch mainline in revision 2159.
  • Revision ID: john@arbash-meinel.com-20061201194116-nvn5qhfxux5284jc
[merge] bzr.dev 2158

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
 
18
 
# XXX: Can we do any better about making interrupted commits change
19
 
# nothing?  
20
 
 
21
 
# TODO: Separate 'prepare' phase where we find a list of potentially
22
 
# committed files.  We then can then pause the commit to prompt for a
23
 
# commit message, knowing the summary will be the same as what's
24
 
# actually used for the commit.  (But perhaps simpler to simply get
25
 
# the tree status, then use that for a selective commit?)
26
 
 
27
18
# The newly committed revision is going to have a shape corresponding
28
19
# to that of the working inventory.  Files that are not in the
29
20
# working tree and that were in the predecessor are reported as
55
46
# merges from, then it should still be reported as newly added
56
47
# relative to the basis revision.
57
48
 
58
 
# TODO: Do checks that the tree can be committed *before* running the 
59
 
# editor; this should include checks for a pointless commit and for 
60
 
# unknown or missing files.
61
 
 
62
 
# TODO: If commit fails, leave the message in a file somewhere.
63
 
 
64
49
# TODO: Change the parameter 'rev_id' to 'revision_id' to be consistent with
65
50
# the rest of the code; add a deprecation of the old name.
66
51
 
185
170
               working_tree=None,
186
171
               local=False,
187
172
               reporter=None,
188
 
               config=None):
 
173
               config=None,
 
174
               message_callback=None):
189
175
        """Commit working copy as a new revision.
190
176
 
191
177
        branch -- the deprecated branch to commit to. New callers should pass in 
192
178
                  working_tree instead
193
179
 
194
 
        message -- the commit message, a mandatory parameter
 
180
        message -- the commit message (it or message_callback is required)
195
181
 
196
182
        timestamp -- if not None, seconds-since-epoch for a
197
183
             postdated/predated commit.
226
212
        else:
227
213
            self.work_tree = working_tree
228
214
            self.branch = self.work_tree.branch
229
 
        if message is None:
230
 
            raise BzrError("The message keyword parameter is required for commit().")
 
215
        if message_callback is None:
 
216
            if message is not None:
 
217
                if isinstance(message, str):
 
218
                    message = message.decode(bzrlib.user_encoding)
 
219
                message_callback = lambda x: message
 
220
            else:
 
221
                raise BzrError("The message or message_callback keyword"
 
222
                               " parameter is required for commit().")
231
223
 
232
224
        self.bound_branch = None
233
225
        self.local = local
273
265
                   
274
266
            if self.config is None:
275
267
                self.config = self.branch.get_config()
276
 
      
277
 
            if isinstance(message, str):
278
 
                message = message.decode(bzrlib.user_encoding)
279
 
            assert isinstance(message, unicode), type(message)
280
 
            self.message = message
281
 
            self._escape_commit_message()
282
268
 
283
269
            self.work_inv = self.work_tree.inventory
284
270
            self.basis_tree = self.work_tree.basis_tree()
318
304
            # that commit will succeed.
319
305
            self.builder.finish_inventory()
320
306
            self._emit_progress_update()
 
307
            message = message_callback(self)
 
308
            assert isinstance(message, unicode), type(message)
 
309
            self.message = message
 
310
            self._escape_commit_message()
 
311
 
321
312
            self.rev_id = self.builder.commit(self.message)
322
313
            self._emit_progress_update()
323
314
            # revision data is in the local branch now.