~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/switch.py

  • Committer: Patch Queue Manager
  • Date: 2011-10-14 16:54:26 UTC
  • mfrom: (6216.1.1 remove-this-file)
  • Revision ID: pqm@pqm.ubuntu.com-20111014165426-tjix4e6idryf1r2z
(jelmer) Remove an accidentally committed .THIS file. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
 
19
19
from bzrlib import errors, merge, revision
20
20
from bzrlib.branch import Branch
 
21
from bzrlib.i18n import gettext
21
22
from bzrlib.trace import note
22
23
 
23
 
 
24
24
def _run_post_switch_hooks(control_dir, to_branch, force, revision_id):
25
25
    from bzrlib.branch import SwitchHookParams
26
26
    hooks = Branch.hooks['post_switch']
33
33
def switch(control_dir, to_branch, force=False, quiet=False, revision_id=None):
34
34
    """Switch the branch associated with a checkout.
35
35
 
36
 
    :param control_dir: BzrDir of the checkout to change
 
36
    :param control_dir: ControlDir of the checkout to change
37
37
    :param to_branch: branch that the checkout is to reference
38
38
    :param force: skip the check for local commits in a heavy checkout
39
39
    :param revision_id: revision ID to switch to.
51
51
def _check_pending_merges(control, force=False):
52
52
    """Check that there are no outstanding pending merges before switching.
53
53
 
54
 
    :param control: BzrDir of the branch to check
 
54
    :param control: ControlDir of the branch to check
55
55
    """
56
56
    try:
57
57
        tree = control.open_workingtree()
64
64
    # XXX: Should the tree be locked for get_parent_ids?
65
65
    existing_pending_merges = tree.get_parent_ids()[1:]
66
66
    if len(existing_pending_merges) > 0:
67
 
        raise errors.BzrCommandError('Pending merges must be '
68
 
            'committed or reverted before using switch.')
 
67
        raise errors.BzrCommandError(gettext('Pending merges must be '
 
68
            'committed or reverted before using switch.'))
69
69
 
70
70
 
71
71
def _set_branch_location(control, to_branch, force=False):
72
72
    """Set location value of a branch reference.
73
73
 
74
 
    :param control: BzrDir of the checkout to change
 
74
    :param control: ControlDir of the checkout to change
75
75
    :param to_branch: branch that the checkout is to reference
76
76
    :param force: skip the check for local commits in a heavy checkout
77
77
    """
90
90
            possible_transports = []
91
91
            try:
92
92
                if not force and _any_local_commits(b, possible_transports):
93
 
                    raise errors.BzrCommandError(
 
93
                    raise errors.BzrCommandError(gettext(
94
94
                        'Cannot switch as local commits found in the checkout. '
95
95
                        'Commit these to the bound branch or use --force to '
96
 
                        'throw them away.')
 
96
                        'throw them away.'))
97
97
            except errors.BoundBranchConnectionFailure, e:
98
 
                raise errors.BzrCommandError(
 
98
                raise errors.BzrCommandError(gettext(
99
99
                        'Unable to connect to current master branch %(target)s: '
100
 
                        '%(error)s To switch anyway, use --force.' %
 
100
                        '%(error)s To switch anyway, use --force.') %
101
101
                        e.__dict__)
102
102
            b.set_bound_location(None)
103
103
            b.pull(to_branch, overwrite=True,
105
105
            b.set_bound_location(to_branch.base)
106
106
            b.set_parent(b.get_master_branch().get_parent())
107
107
        else:
108
 
            raise errors.BzrCommandError('Cannot switch a branch, '
109
 
                'only a checkout.')
 
108
            raise errors.BzrCommandError(gettext('Cannot switch a branch, '
 
109
                'only a checkout.'))
110
110
 
111
111
 
112
112
def _any_local_commits(this_branch, possible_transports):
141
141
            revision_id = to_branch.last_revision()
142
142
        if tree.last_revision() == revision_id:
143
143
            if not quiet:
144
 
                note("Tree is up to date at revision %d.", to_branch.revno())
 
144
                note(gettext("Tree is up to date at revision %d."), to_branch.revno())
145
145
            return
146
146
        base_tree = source_repository.revision_tree(tree.last_revision())
147
147
        merge.Merge3Merger(tree, tree, base_tree, to_branch.repository.revision_tree(revision_id))
148
148
        tree.set_last_revision(to_branch.last_revision())
149
149
        if not quiet:
150
 
            note('Updated to revision %d.' % to_branch.revno())
 
150
            note(gettext('Updated to revision %d.') % to_branch.revno())
151
151
    finally:
152
152
        tree.unlock()