/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/controldir.py

Add a tag_selector argument to push/pull/sprout functions.

Merged from https://code.launchpad.net/~jelmer/brz/tag-selector/+merge/379435

Show diffs side-by-side

added added

removed removed

Lines of Context:
400
400
        raise NotImplementedError(self.sprout)
401
401
 
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
                    tag_selector=None):
404
405
        """Push the source branch into this ControlDir."""
405
406
        br_to = None
406
407
        # If we can open a branch, use its direct repository, otherwise see
424
425
                # revision
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
453
458
            else:
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,
457
 
                        lossy=lossy)
 
462
                        lossy=lossy, tag_selector=tag_selector)
458
463
                    tree_to.update()
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)
494
499
 
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.
498
503
 
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)
513
519
 
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,
 
523
                           tag_selector=None):
517
524
        """Clone this controldir and its contents to transport verbatim.
518
525
 
519
526
        :param transport: The transport for the location to produce the clone