~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-10-01 22:33:10 UTC
  • mfrom: (5452.3.1 doc-fix)
  • Revision ID: pqm@pqm.ubuntu.com-20101001223310-t8adqw9m9ogrvnlc
(jameinel) fixed link to main smart server doc from http smart server doc
 (dmuir)

Show diffs side-by-side

added added

removed removed

Lines of Context:
49
49
# TODO: Change the parameter 'rev_id' to 'revision_id' to be consistent with
50
50
# the rest of the code; add a deprecation of the old name.
51
51
 
52
 
import os
53
 
import re
54
 
import sys
55
 
import time
56
 
 
57
 
from cStringIO import StringIO
58
 
 
59
52
from bzrlib import (
60
53
    debug,
61
54
    errors,
62
55
    revision,
63
56
    trace,
64
57
    tree,
65
 
    xml_serializer,
66
58
    )
67
59
from bzrlib.branch import Branch
68
60
from bzrlib.cleanup import OperationWithCleanups
72
64
                           StrictCommitFailed
73
65
                           )
74
66
from bzrlib.osutils import (get_user_encoding,
75
 
                            kind_marker, isdir,isfile, is_inside_any,
76
 
                            is_inside_or_parent_of_any,
 
67
                            is_inside_any,
77
68
                            minimum_path_selection,
78
 
                            quotefn, sha_file, split_lines,
79
69
                            splitpath,
80
70
                            )
81
 
from bzrlib.testament import Testament
82
 
from bzrlib.trace import mutter, note, warning, is_quiet
 
71
from bzrlib.trace import mutter, note, is_quiet
83
72
from bzrlib.inventory import Inventory, InventoryEntry, make_entry
84
73
from bzrlib import symbol_versioning
85
 
from bzrlib.symbol_versioning import (deprecated_passed,
86
 
        deprecated_function,
87
 
        DEPRECATED_PARAMETER)
88
 
from bzrlib.workingtree import WorkingTree
89
74
from bzrlib.urlutils import unescape_for_display
90
75
import bzrlib.ui
91
76
 
147
132
 
148
133
    def completed(self, revno, rev_id):
149
134
        self._note('Committed revision %d.', revno)
 
135
        # self._note goes to the console too; so while we want to log the
 
136
        # rev_id, we can't trivially only log it. (See bug 526425). Long
 
137
        # term we should rearrange the reporting structure, but for now
 
138
        # we just mutter seperately. We mutter the revid and revno together
 
139
        # so that concurrent bzr invocations won't lead to confusion.
 
140
        mutter('Committed revid %s as revno %d.', rev_id, revno)
150
141
 
151
142
    def deleted(self, path):
152
143
        self._note('deleted %s', path)
183
174
        self.reporter = reporter
184
175
        self.config = config
185
176
 
 
177
    @staticmethod
 
178
    def update_revprops(revprops, branch, authors=None, author=None,
 
179
                        local=False, possible_master_transports=None):
 
180
        if revprops is None:
 
181
            revprops = {}
 
182
        if possible_master_transports is None:
 
183
            possible_master_transports = []
 
184
        if not 'branch-nick' in revprops:
 
185
            revprops['branch-nick'] = branch._get_nick(
 
186
                local,
 
187
                possible_master_transports)
 
188
        if authors is not None:
 
189
            if author is not None:
 
190
                raise AssertionError('Specifying both author and authors '
 
191
                        'is not allowed. Specify just authors instead')
 
192
            if 'author' in revprops or 'authors' in revprops:
 
193
                # XXX: maybe we should just accept one of them?
 
194
                raise AssertionError('author property given twice')
 
195
            if authors:
 
196
                for individual in authors:
 
197
                    if '\n' in individual:
 
198
                        raise AssertionError('\\n is not a valid character '
 
199
                                'in an author identity')
 
200
                revprops['authors'] = '\n'.join(authors)
 
201
        if author is not None:
 
202
            symbol_versioning.warn('The parameter author was deprecated'
 
203
                   ' in version 1.13. Use authors instead',
 
204
                   DeprecationWarning)
 
205
            if 'author' in revprops or 'authors' in revprops:
 
206
                # XXX: maybe we should just accept one of them?
 
207
                raise AssertionError('author property given twice')
 
208
            if '\n' in author:
 
209
                raise AssertionError('\\n is not a valid character '
 
210
                        'in an author identity')
 
211
            revprops['authors'] = author
 
212
        return revprops
 
213
 
186
214
    def commit(self,
187
215
               message=None,
188
216
               timestamp=None,
236
264
            commit.
237
265
        """
238
266
        operation = OperationWithCleanups(self._commit)
 
267
        self.revprops = revprops or {}
 
268
        # XXX: Can be set on __init__ or passed in - this is a bit ugly.
 
269
        self.config = config or self.config
239
270
        return operation.run(
240
271
               message=message,
241
272
               timestamp=timestamp,
246
277
               allow_pointless=allow_pointless,
247
278
               strict=strict,
248
279
               verbose=verbose,
249
 
               revprops=revprops,
250
280
               working_tree=working_tree,
251
281
               local=local,
252
282
               reporter=reporter,
253
 
               config=config,
254
283
               message_callback=message_callback,
255
284
               recursive=recursive,
256
285
               exclude=exclude,
257
286
               possible_master_transports=possible_master_transports)
258
287
 
259
288
    def _commit(self, operation, message, timestamp, timezone, committer,
260
 
            specific_files, rev_id, allow_pointless, strict, verbose, revprops,
261
 
            working_tree, local, reporter, config, message_callback, recursive,
 
289
            specific_files, rev_id, allow_pointless, strict, verbose,
 
290
            working_tree, local, reporter, message_callback, recursive,
262
291
            exclude, possible_master_transports):
263
292
        mutter('preparing to commit')
264
293
 
299
328
            self.specific_files = None
300
329
            
301
330
        self.allow_pointless = allow_pointless
302
 
        self.revprops = revprops
303
331
        self.message_callback = message_callback
304
332
        self.timestamp = timestamp
305
333
        self.timezone = timezone
371
399
        # Collect the changes
372
400
        self._set_progress_stage("Collecting changes", counter=True)
373
401
        self.builder = self.branch.get_commit_builder(self.parents,
374
 
            self.config, timestamp, timezone, committer, revprops, rev_id)
 
402
            self.config, timestamp, timezone, committer, self.revprops, rev_id)
375
403
 
376
404
        try:
377
405
            self.builder.will_record_deletes()