1
# Copyright (C) 2005-2010 Canonical Ltd
1
# Copyright (C) 2005-2011 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
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
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
309
346
not self.branch.repository._format.supports_tree_reference and
310
347
(self.branch.repository._format.fast_deltas or
311
348
len(self.parents) < 2))
312
self.pb = bzrlib.ui.ui_factory.nested_progress_bar()
349
self.pb = ui.ui_factory.nested_progress_bar()
313
350
operation.add_cleanup(self.pb.finished)
314
351
self.basis_revid = self.work_tree.last_revision()
315
352
self.basis_tree = self.work_tree.basis_tree()
407
446
self._set_progress_stage("Uploading data to master branch")
408
447
# 'commit' to the master first so a timeout here causes the
409
448
# local branch to be out of date
410
self.master_branch.import_last_revision_info(
411
self.branch.repository, new_revno, self.rev_id)
449
self.master_branch.import_last_revision_info_and_tags(
450
self.branch, new_revno, self.rev_id)
413
452
# and now do the commit locally.
414
453
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))
416
464
# Make the working tree be up to date with the branch. This
417
465
# includes automatic changes scheduled to be made to the tree, such
418
466
# as updating its basis and unversioning paths that were missing.