~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/switch.py

(gz) Backslash escape selftest output when printing to non-unicode consoles
 (Martin [gz])

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006, 2007 Canonical Ltd.
 
1
# Copyright (C) 2007, 2009, 2010 Canonical Ltd.
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
17
17
# Original author: David Allouche
18
18
 
19
19
from bzrlib import errors, merge, revision
20
 
from bzrlib.branch import Branch, BranchFormat, BranchReferenceFormat
21
 
from bzrlib.bzrdir import BzrDir
 
20
from bzrlib.branch import Branch
22
21
from bzrlib.trace import note
23
22
 
24
23
 
 
24
def _run_post_switch_hooks(control_dir, to_branch, force, revision_id):
 
25
    from bzrlib.branch import SwitchHookParams
 
26
    hooks = Branch.hooks['post_switch']
 
27
    if not hooks:
 
28
        return
 
29
    params = SwitchHookParams(control_dir, to_branch, force, revision_id)
 
30
    for hook in hooks:
 
31
        hook(params)
 
32
 
25
33
def switch(control_dir, to_branch, force=False, quiet=False, revision_id=None):
26
34
    """Switch the branch associated with a checkout.
27
35
 
38
46
    _set_branch_location(control_dir, to_branch, force)
39
47
    tree = control_dir.open_workingtree()
40
48
    _update(tree, source_repository, quiet, revision_id)
41
 
 
 
49
    _run_post_switch_hooks(control_dir, to_branch, force, revision_id)
42
50
 
43
51
def _check_pending_merges(control, force=False):
44
52
    """Check that there are no outstanding pending merges before switching.
70
78
    branch_format = control.find_branch_format()
71
79
    if branch_format.get_reference(control) is not None:
72
80
        # Lightweight checkout: update the branch reference
73
 
        branch_format.set_reference(control, to_branch)
 
81
        branch_format.set_reference(control, None, to_branch)
74
82
    else:
75
83
        b = control.open_branch()
76
84
        bound_branch = b.get_bound_location()