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