398
398
raise NotImplementedError(self.sprout)
400
400
def push_branch(self, source, revision_id=None, overwrite=False,
401
remember=False, create_prefix=False, lossy=False):
401
remember=False, create_prefix=False, lossy=False,
402
403
"""Push the source branch into this ControlDir."""
404
405
# If we can open a branch, use its direct repository, otherwise see
423
424
revision_id = source.last_revision()
424
425
repository_to.fetch(source.repository, revision_id=revision_id)
425
br_to = source.sprout(self, revision_id=revision_id, lossy=lossy)
426
br_to = source.sprout(
427
self, revision_id=revision_id, lossy=lossy,
428
tag_selector=tag_selector)
426
429
if source.get_push_location() is None or remember:
427
430
# FIXME: Should be done only if we succeed ? -- vila 2012-01-18
428
431
source.set_push_location(br_to.base)
442
445
tree_to = self.open_workingtree()
443
446
except errors.NotLocalUrl:
444
447
push_result.branch_push_result = source.push(
445
br_to, overwrite, stop_revision=revision_id, lossy=lossy)
448
br_to, overwrite, stop_revision=revision_id, lossy=lossy,
449
tag_selector=tag_selector)
446
450
push_result.workingtree_updated = False
447
451
except errors.NoWorkingTree:
448
452
push_result.branch_push_result = source.push(
449
br_to, overwrite, stop_revision=revision_id, lossy=lossy)
453
br_to, overwrite, stop_revision=revision_id, lossy=lossy,
454
tag_selector=tag_selector)
450
455
push_result.workingtree_updated = None # Not applicable
452
457
with tree_to.lock_write():
453
458
push_result.branch_push_result = source.push(
454
459
tree_to.branch, overwrite, stop_revision=revision_id,
460
lossy=lossy, tag_selector=tag_selector)
457
462
push_result.workingtree_updated = True
458
463
push_result.old_revno = push_result.branch_push_result.old_revno
491
496
raise NotImplementedError(self.check_conversion_target)
493
498
def clone(self, url, revision_id=None, force_new_repo=False,
494
preserve_stacking=False):
499
preserve_stacking=False, tag_selector=None):
495
500
"""Clone this controldir and its contents to url verbatim.
497
502
:param url: The url create the clone at. If url's last component does
507
512
return self.clone_on_transport(_mod_transport.get_transport(url),
508
513
revision_id=revision_id,
509
514
force_new_repo=force_new_repo,
510
preserve_stacking=preserve_stacking)
515
preserve_stacking=preserve_stacking,
516
tag_selector=tag_selector)
512
518
def clone_on_transport(self, transport, revision_id=None,
513
519
force_new_repo=False, preserve_stacking=False, stacked_on=None,
514
create_prefix=False, use_existing_dir=True, no_tree=False):
520
create_prefix=False, use_existing_dir=True, no_tree=False,
515
522
"""Clone this controldir and its contents to transport verbatim.
517
524
:param transport: The transport for the location to produce the clone