~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/switch.py

(jameinel) Allow 'bzr serve' to interpret SIGHUP as a graceful shutdown.
 (bug #795025) (John A Meinel)

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']
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):
78
78
    branch_format = control.find_branch_format()
79
79
    if branch_format.get_reference(control) is not None:
80
80
        # Lightweight checkout: update the branch reference
81
 
        branch_format.set_reference(control, to_branch)
 
81
        branch_format.set_reference(control, None, to_branch)
82
82
    else:
83
83
        b = control.open_branch()
84
84
        bound_branch = b.get_bound_location()
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,
104
104
                possible_transports=possible_transports)
105
105
            b.set_bound_location(to_branch.base)
 
106
            b.set_parent(b.get_master_branch().get_parent())
106
107
        else:
107
 
            raise errors.BzrCommandError('Cannot switch a branch, '
108
 
                'only a checkout.')
 
108
            raise errors.BzrCommandError(gettext('Cannot switch a branch, '
 
109
                'only a checkout.'))
109
110
 
110
111
 
111
112
def _any_local_commits(this_branch, possible_transports):
140
141
            revision_id = to_branch.last_revision()
141
142
        if tree.last_revision() == revision_id:
142
143
            if not quiet:
143
 
                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())
144
145
            return
145
146
        base_tree = source_repository.revision_tree(tree.last_revision())
146
147
        merge.Merge3Merger(tree, tree, base_tree, to_branch.repository.revision_tree(revision_id))
147
148
        tree.set_last_revision(to_branch.last_revision())
148
149
        if not quiet:
149
 
            note('Updated to revision %d.' % to_branch.revno())
 
150
            note(gettext('Updated to revision %d.') % to_branch.revno())
150
151
    finally:
151
152
        tree.unlock()