~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/commit.py

  • Committer: Jelmer Vernooij
  • Date: 2010-08-28 11:19:49 UTC
  • mto: This revision was merged to the branch mainline in revision 5418.
  • Revision ID: jelmer@samba.org-20100828111949-6ke9opiop2oomr4f
Move get_config to ControlDir.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2011 Canonical Ltd
 
1
# Copyright (C) 2005-2010 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,
59
58
    )
60
59
from bzrlib.branch import Branch
61
60
from bzrlib.cleanup import OperationWithCleanups
73
72
from bzrlib.inventory import Inventory, InventoryEntry, make_entry
74
73
from bzrlib import symbol_versioning
75
74
from bzrlib.urlutils import unescape_for_display
 
75
import bzrlib.ui
76
76
 
77
77
 
78
78
class NullCommitReporter(object):
229
229
               message_callback=None,
230
230
               recursive='down',
231
231
               exclude=None,
232
 
               possible_master_transports=None,
233
 
               lossy=False):
 
232
               possible_master_transports=None):
234
233
        """Commit working copy as a new revision.
235
234
 
236
235
        :param message: the commit message (it or message_callback is required)
263
262
        :param exclude: None or a list of relative paths to exclude from the
264
263
            commit. Pending changes to excluded files will be ignored by the
265
264
            commit.
266
 
        :param lossy: When committing to a foreign VCS, ignore any
267
 
            data that can not be natively represented.
268
265
        """
269
266
        operation = OperationWithCleanups(self._commit)
270
267
        self.revprops = revprops or {}
286
283
               message_callback=message_callback,
287
284
               recursive=recursive,
288
285
               exclude=exclude,
289
 
               possible_master_transports=possible_master_transports,
290
 
               lossy=lossy)
 
286
               possible_master_transports=possible_master_transports)
291
287
 
292
288
    def _commit(self, operation, message, timestamp, timezone, committer,
293
289
            specific_files, rev_id, allow_pointless, strict, verbose,
294
290
            working_tree, local, reporter, message_callback, recursive,
295
 
            exclude, possible_master_transports, lossy):
 
291
            exclude, possible_master_transports):
296
292
        mutter('preparing to commit')
297
293
 
298
294
        if working_tree is None:
330
326
                minimum_path_selection(specific_files))
331
327
        else:
332
328
            self.specific_files = None
333
 
 
 
329
            
334
330
        self.allow_pointless = allow_pointless
335
331
        self.message_callback = message_callback
336
332
        self.timestamp = timestamp
350
346
            not self.branch.repository._format.supports_tree_reference and
351
347
            (self.branch.repository._format.fast_deltas or
352
348
             len(self.parents) < 2))
353
 
        self.pb = ui.ui_factory.nested_progress_bar()
 
349
        self.pb = bzrlib.ui.ui_factory.nested_progress_bar()
354
350
        operation.add_cleanup(self.pb.finished)
355
351
        self.basis_revid = self.work_tree.last_revision()
356
352
        self.basis_tree = self.work_tree.basis_tree()
384
380
        self.pb_stage_count = 0
385
381
        self.pb_stage_total = 5
386
382
        if self.bound_branch:
387
 
            # 2 extra stages: "Uploading data to master branch" and "Merging
388
 
            # tags to master branch"
389
 
            self.pb_stage_total += 2
 
383
            self.pb_stage_total += 1
390
384
        self.pb.show_pct = False
391
385
        self.pb.show_spinner = False
392
386
        self.pb.show_eta = False
404
398
 
405
399
        # Collect the changes
406
400
        self._set_progress_stage("Collecting changes", counter=True)
407
 
        self._lossy = lossy
408
401
        self.builder = self.branch.get_commit_builder(self.parents,
409
 
            self.config, timestamp, timezone, committer, self.revprops,
410
 
            rev_id, lossy=lossy)
411
 
        if not self.builder.supports_record_entry_contents and self.exclude:
412
 
            self.builder.abort()
413
 
            raise errors.ExcludesUnsupported(self.branch.repository)
 
402
            self.config, timestamp, timezone, committer, self.revprops, rev_id)
414
403
 
415
404
        try:
416
405
            self.builder.will_record_deletes()
455
444
            self._set_progress_stage("Uploading data to master branch")
456
445
            # 'commit' to the master first so a timeout here causes the
457
446
            # local branch to be out of date
458
 
            (new_revno, self.rev_id) = self.master_branch.import_last_revision_info_and_tags(
459
 
                self.branch, new_revno, self.rev_id, lossy=lossy)
460
 
            if lossy:
461
 
                self.branch.fetch(self.master_branch, self.rev_id)
 
447
            self.master_branch.import_last_revision_info(
 
448
                self.branch.repository, new_revno, self.rev_id)
462
449
 
463
450
        # and now do the commit locally.
464
451
        self.branch.set_last_revision_info(new_revno, self.rev_id)
465
452
 
466
 
        # Merge local tags to remote
467
 
        if self.bound_branch:
468
 
            self._set_progress_stage("Merging tags to master branch")
469
 
            tag_conflicts = self.branch.tags.merge_to(self.master_branch.tags)
470
 
            if tag_conflicts:
471
 
                warning_lines = ['    ' + name for name, _, _ in tag_conflicts]
472
 
                note("Conflicting tags in bound branch:\n" +
473
 
                    "\n".join(warning_lines))
474
 
 
475
453
        # Make the working tree be up to date with the branch. This
476
454
        # includes automatic changes scheduled to be made to the tree, such
477
455
        # as updating its basis and unversioning paths that were missing.