~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

merge trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2010 Canonical Ltd
 
1
# Copyright (C) 2005-2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
55
55
    revision,
56
56
    trace,
57
57
    tree,
 
58
    ui,
58
59
    )
59
60
from bzrlib.branch import Branch
60
61
from bzrlib.cleanup import OperationWithCleanups
72
73
from bzrlib.inventory import Inventory, InventoryEntry, make_entry
73
74
from bzrlib import symbol_versioning
74
75
from bzrlib.urlutils import unescape_for_display
75
 
import bzrlib.ui
76
76
 
77
77
 
78
78
class NullCommitReporter(object):
326
326
                minimum_path_selection(specific_files))
327
327
        else:
328
328
            self.specific_files = None
329
 
            
 
329
 
330
330
        self.allow_pointless = allow_pointless
331
331
        self.message_callback = message_callback
332
332
        self.timestamp = timestamp
346
346
            not self.branch.repository._format.supports_tree_reference and
347
347
            (self.branch.repository._format.fast_deltas or
348
348
             len(self.parents) < 2))
349
 
        self.pb = bzrlib.ui.ui_factory.nested_progress_bar()
 
349
        self.pb = ui.ui_factory.nested_progress_bar()
350
350
        operation.add_cleanup(self.pb.finished)
351
351
        self.basis_revid = self.work_tree.last_revision()
352
352
        self.basis_tree = self.work_tree.basis_tree()
380
380
        self.pb_stage_count = 0
381
381
        self.pb_stage_total = 5
382
382
        if self.bound_branch:
383
 
            self.pb_stage_total += 1
 
383
            # 2 extra stages: "Uploading data to master branch" and "Merging
 
384
            # tags to master branch"
 
385
            self.pb_stage_total += 2
384
386
        self.pb.show_pct = False
385
387
        self.pb.show_spinner = False
386
388
        self.pb.show_eta = False
400
402
        self._set_progress_stage("Collecting changes", counter=True)
401
403
        self.builder = self.branch.get_commit_builder(self.parents,
402
404
            self.config, timestamp, timezone, committer, self.revprops, rev_id)
 
405
        if not self.builder.supports_record_entry_contents and self.exclude:
 
406
            self.builder.abort()
 
407
            raise errors.ExcludesUnsupported(self.branch.repository)
403
408
 
404
409
        try:
405
410
            self.builder.will_record_deletes()
444
449
            self._set_progress_stage("Uploading data to master branch")
445
450
            # 'commit' to the master first so a timeout here causes the
446
451
            # local branch to be out of date
447
 
            self.master_branch.import_last_revision_info(
448
 
                self.branch.repository, new_revno, self.rev_id)
 
452
            self.master_branch.import_last_revision_info_and_tags(
 
453
                self.branch, new_revno, self.rev_id)
449
454
 
450
455
        # and now do the commit locally.
451
456
        self.branch.set_last_revision_info(new_revno, self.rev_id)
452
457
 
 
458
        # Merge local tags to remote
 
459
        if self.bound_branch:
 
460
            self._set_progress_stage("Merging tags to master branch")
 
461
            tag_conflicts = self.branch.tags.merge_to(self.master_branch.tags)
 
462
            if tag_conflicts:
 
463
                warning_lines = ['    ' + name for name, _, _ in tag_conflicts]
 
464
                note("Conflicting tags in bound branch:\n" +
 
465
                    "\n".join(warning_lines))
 
466
 
453
467
        # Make the working tree be up to date with the branch. This
454
468
        # includes automatic changes scheduled to be made to the tree, such
455
469
        # as updating its basis and unversioning paths that were missing.