1
# Copyright (C) 2005-2011 Canonical Ltd
1
# Copyright (C) 2005-2010 Canonical Ltd
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
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
78
78
class NullCommitReporter(object):
174
174
self.reporter = reporter
175
175
self.config = config
178
def update_revprops(revprops, branch, authors=None, author=None,
179
local=False, possible_master_transports=None):
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(
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')
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',
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')
209
raise AssertionError('\\n is not a valid character '
210
'in an author identity')
211
revprops['authors'] = author
346
309
not self.branch.repository._format.supports_tree_reference and
347
310
(self.branch.repository._format.fast_deltas or
348
311
len(self.parents) < 2))
349
self.pb = ui.ui_factory.nested_progress_bar()
312
self.pb = bzrlib.ui.ui_factory.nested_progress_bar()
350
313
operation.add_cleanup(self.pb.finished)
351
314
self.basis_revid = self.work_tree.last_revision()
352
315
self.basis_tree = self.work_tree.basis_tree()
446
407
self._set_progress_stage("Uploading data to master branch")
447
408
# 'commit' to the master first so a timeout here causes the
448
409
# local branch to be out of date
449
self.master_branch.import_last_revision_info_and_tags(
450
self.branch, new_revno, self.rev_id)
410
self.master_branch.import_last_revision_info(
411
self.branch.repository, new_revno, self.rev_id)
452
413
# and now do the commit locally.
453
414
self.branch.set_last_revision_info(new_revno, self.rev_id)
455
# Merge local tags to remote
456
if self.bound_branch:
457
self._set_progress_stage("Merging tags to master branch")
458
tag_conflicts = self.branch.tags.merge_to(self.master_branch.tags)
460
warning_lines = [' ' + name for name, _, _ in tag_conflicts]
461
note("Conflicting tags in bound branch:\n" +
462
"\n".join(warning_lines))
464
416
# Make the working tree be up to date with the branch. This
465
417
# includes automatic changes scheduled to be made to the tree, such
466
418
# as updating its basis and unversioning paths that were missing.