/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

  • Committer: Vincent Ladeuil
  • Date: 2011-07-06 09:22:00 UTC
  • mfrom: (6008 +trunk)
  • mto: (6012.1.1 trunk)
  • mto: This revision was merged to the branch mainline in revision 6013.
  • Revision ID: v.ladeuil+lp@free.fr-20110706092200-7iai2mwzc0sqdsvf
MergingĀ inĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
52
52
from bzrlib import (
53
53
    debug,
54
54
    errors,
55
 
    revision,
56
55
    trace,
57
56
    tree,
58
57
    ui,
229
228
               message_callback=None,
230
229
               recursive='down',
231
230
               exclude=None,
232
 
               possible_master_transports=None):
 
231
               possible_master_transports=None,
 
232
               lossy=False):
233
233
        """Commit working copy as a new revision.
234
234
 
235
235
        :param message: the commit message (it or message_callback is required)
262
262
        :param exclude: None or a list of relative paths to exclude from the
263
263
            commit. Pending changes to excluded files will be ignored by the
264
264
            commit.
 
265
        :param lossy: When committing to a foreign VCS, ignore any
 
266
            data that can not be natively represented.
265
267
        """
266
268
        operation = OperationWithCleanups(self._commit)
267
269
        self.revprops = revprops or {}
283
285
               message_callback=message_callback,
284
286
               recursive=recursive,
285
287
               exclude=exclude,
286
 
               possible_master_transports=possible_master_transports)
 
288
               possible_master_transports=possible_master_transports,
 
289
               lossy=lossy)
287
290
 
288
291
    def _commit(self, operation, message, timestamp, timezone, committer,
289
292
            specific_files, rev_id, allow_pointless, strict, verbose,
290
293
            working_tree, local, reporter, message_callback, recursive,
291
 
            exclude, possible_master_transports):
 
294
            exclude, possible_master_transports, lossy):
292
295
        mutter('preparing to commit')
293
296
 
294
297
        if working_tree is None:
326
329
                minimum_path_selection(specific_files))
327
330
        else:
328
331
            self.specific_files = None
329
 
            
 
332
 
330
333
        self.allow_pointless = allow_pointless
331
334
        self.message_callback = message_callback
332
335
        self.timestamp = timestamp
400
403
 
401
404
        # Collect the changes
402
405
        self._set_progress_stage("Collecting changes", counter=True)
 
406
        self._lossy = lossy
403
407
        self.builder = self.branch.get_commit_builder(self.parents,
404
 
            self.config, timestamp, timezone, committer, self.revprops, rev_id)
 
408
            self.config, timestamp, timezone, committer, self.revprops,
 
409
            rev_id, lossy=lossy)
 
410
        if not self.builder.supports_record_entry_contents and self.exclude:
 
411
            self.builder.abort()
 
412
            raise errors.ExcludesUnsupported(self.branch.repository)
405
413
 
406
414
        try:
407
415
            self.builder.will_record_deletes()
434
442
        except Exception, e:
435
443
            mutter("aborting commit write group because of exception:")
436
444
            trace.log_exception_quietly()
437
 
            note("aborting commit write group: %r" % (e,))
438
445
            self.builder.abort()
439
446
            raise
440
447
 
446
453
            self._set_progress_stage("Uploading data to master branch")
447
454
            # 'commit' to the master first so a timeout here causes the
448
455
            # local branch to be out of date
449
 
            self.master_branch.import_last_revision_info(
450
 
                self.branch.repository, new_revno, self.rev_id)
 
456
            (new_revno, self.rev_id) = self.master_branch.import_last_revision_info_and_tags(
 
457
                self.branch, new_revno, self.rev_id, lossy=lossy)
 
458
            if lossy:
 
459
                self.branch.fetch(self.master_branch, self.rev_id)
451
460
 
452
461
        # and now do the commit locally.
453
462
        self.branch.set_last_revision_info(new_revno, self.rev_id)
484
493
        # A merge with no effect on files
485
494
        if len(self.parents) > 1:
486
495
            return
487
 
        # TODO: we could simplify this by using self.builder.basis_delta.
488
 
 
489
 
        # The initial commit adds a root directory, but this in itself is not
490
 
        # a worthwhile commit.
491
 
        if (self.basis_revid == revision.NULL_REVISION and
492
 
            ((self.builder.new_inventory is not None and
493
 
             len(self.builder.new_inventory) == 1) or
494
 
            len(self.builder._basis_delta) == 1)):
495
 
            raise PointlessCommit()
496
496
        if self.builder.any_changes():
497
497
            return
498
498
        raise PointlessCommit()
723
723
        if self.specific_files or self.exclude:
724
724
            specific_files = self.specific_files or []
725
725
            for path, old_ie in self.basis_inv.iter_entries():
726
 
                if old_ie.file_id in self.builder.new_inventory:
 
726
                if self.builder.new_inventory.has_id(old_ie.file_id):
727
727
                    # already added - skip.
728
728
                    continue
729
729
                if (is_inside_any(specific_files, path)