412
412
raise NotImplementedError(self.sprout)
414
414
def push_branch(self, source, revision_id=None, overwrite=False,
415
remember=False, create_prefix=False, lossy=False):
415
remember=False, create_prefix=False, lossy=False,
416
417
"""Push the source branch into this ControlDir."""
418
419
# If we can open a branch, use its direct repository, otherwise see
437
438
revision_id = source.last_revision()
438
439
repository_to.fetch(source.repository, revision_id=revision_id)
439
br_to = source.sprout(self, revision_id=revision_id, lossy=lossy)
440
br_to = source.sprout(
441
self, revision_id=revision_id, lossy=lossy,
442
tag_selector=tag_selector)
440
443
if source.get_push_location() is None or remember:
441
444
# FIXME: Should be done only if we succeed ? -- vila 2012-01-18
442
445
source.set_push_location(br_to.base)
456
459
tree_to = self.open_workingtree()
457
460
except errors.NotLocalUrl:
458
461
push_result.branch_push_result = source.push(
459
br_to, overwrite, stop_revision=revision_id, lossy=lossy)
462
br_to, overwrite, stop_revision=revision_id, lossy=lossy,
463
tag_selector=tag_selector)
460
464
push_result.workingtree_updated = False
461
465
except errors.NoWorkingTree:
462
466
push_result.branch_push_result = source.push(
463
br_to, overwrite, stop_revision=revision_id, lossy=lossy)
467
br_to, overwrite, stop_revision=revision_id, lossy=lossy,
468
tag_selector=tag_selector)
464
469
push_result.workingtree_updated = None # Not applicable
466
471
with tree_to.lock_write():
467
472
push_result.branch_push_result = source.push(
468
473
tree_to.branch, overwrite, stop_revision=revision_id,
474
lossy=lossy, tag_selector=tag_selector)
471
476
push_result.workingtree_updated = True
472
477
push_result.old_revno = push_result.branch_push_result.old_revno
505
510
raise NotImplementedError(self.check_conversion_target)
507
512
def clone(self, url, revision_id=None, force_new_repo=False,
508
preserve_stacking=False):
513
preserve_stacking=False, tag_selector=None):
509
514
"""Clone this controldir and its contents to url verbatim.
511
516
:param url: The url create the clone at. If url's last component does
521
526
return self.clone_on_transport(_mod_transport.get_transport(url),
522
527
revision_id=revision_id,
523
528
force_new_repo=force_new_repo,
524
preserve_stacking=preserve_stacking)
529
preserve_stacking=preserve_stacking,
530
tag_selector=tag_selector)
526
532
def clone_on_transport(self, transport, revision_id=None,
527
533
force_new_repo=False, preserve_stacking=False, stacked_on=None,
528
create_prefix=False, use_existing_dir=True, no_tree=False):
534
create_prefix=False, use_existing_dir=True, no_tree=False,
529
536
"""Clone this controldir and its contents to transport verbatim.
531
538
:param transport: The transport for the location to produce the clone