279
279
path = osutils.getcwd()
280
control, relpath = bzrdir.BzrDir.open_containing(path)
280
control, relpath = controldir.ControlDir.open_containing(path)
281
281
return control.open_workingtree(), relpath
367
367
return True, tree
368
368
t = transport.get_transport(location)
369
iterator = bzrdir.BzrDir.find_bzrdirs(t, evaluate=evaluate,
369
iterator = controldir.ControlDir.find_bzrdirs(t, evaluate=evaluate,
370
370
list_current=list_current)
371
371
return [tr for tr in iterator if tr is not None]
494
494
raise NotImplementedError(self.get_root_id)
497
def clone(self, to_bzrdir, revision_id=None):
497
def clone(self, to_controldir, revision_id=None):
498
498
"""Duplicate this working tree into to_bzr, including all state.
500
500
Specifically modified files are kept as modified, but
501
501
ignored and unknown files are discarded.
503
If you want to make a new line of development, see bzrdir.sprout()
503
If you want to make a new line of development, see ControlDir.sprout()
506
506
If not None, the cloned tree will have its last revision set to
508
508
and this one merged in.
510
510
# assumes the target bzr dir format is compatible.
511
result = to_bzrdir.create_workingtree()
511
result = to_controldir.create_workingtree()
512
512
self.copy_content_into(result, revision_id)
522
522
# TODO now merge from tree.last_revision to revision (to preserve
523
523
# user local changes)
524
524
merge.transform_tree(tree, self)
525
tree.set_parent_ids([revision_id])
525
if revision_id == _mod_revision.NULL_REVISION:
528
new_parents = [revision_id]
529
tree.set_parent_ids(new_parents)
527
531
def id2abspath(self, file_id):
528
532
return self.abspath(self.id2path(file_id))
1004
1008
show_base=show_base)
1005
1009
basis_root_id = basis_tree.get_root_id()
1006
1010
new_root_id = new_basis_tree.get_root_id()
1007
if basis_root_id != new_root_id:
1011
if new_root_id is not None and basis_root_id != new_root_id:
1008
1012
self.set_root_id(new_root_id)
1010
1014
basis_tree.unlock()
1011
1015
# TODO - dedup parents list with things merged by pull ?
1012
1016
# reuse the revisiontree we merged against to set the new
1014
parent_trees = [(self.branch.last_revision(), new_basis_tree)]
1019
if self.branch.last_revision() != _mod_revision.NULL_REVISION:
1020
parent_trees.append(
1021
(self.branch.last_revision(), new_basis_tree))
1015
1022
# we have to pull the merge trees out again, because
1016
1023
# merge_inner has set the ids. - this corner is not yet
1017
1024
# layered well enough to prevent double handling.
2982
2989
supports_versioned_directories = None
2985
def find_format_string(klass, a_bzrdir):
2986
"""Return format name for the working tree object in a_bzrdir."""
2992
def find_format_string(klass, controldir):
2993
"""Return format name for the working tree object in controldir."""
2988
transport = a_bzrdir.get_workingtree_transport(None)
2995
transport = controldir.get_workingtree_transport(None)
2989
2996
return transport.get_bytes("format")
2990
2997
except errors.NoSuchFile:
2991
2998
raise errors.NoWorkingTree(base=transport.base)
2994
def find_format(klass, a_bzrdir):
2995
"""Return the format for the working tree object in a_bzrdir."""
3001
def find_format(klass, controldir):
3002
"""Return the format for the working tree object in controldir."""
2997
format_string = klass.find_format_string(a_bzrdir)
3004
format_string = klass.find_format_string(controldir)
2998
3005
return format_registry.get(format_string)
2999
3006
except KeyError:
3000
3007
raise errors.UnknownFormatError(format=format_string,
3001
3008
kind="working tree")
3003
def initialize(self, a_bzrdir, revision_id=None, from_branch=None,
3010
def initialize(self, controldir, revision_id=None, from_branch=None,
3004
3011
accelerator_tree=None, hardlink=False):
3005
"""Initialize a new working tree in a_bzrdir.
3012
"""Initialize a new working tree in controldir.
3007
:param a_bzrdir: BzrDir to initialize the working tree in.
3014
:param controldir: ControlDir to initialize the working tree in.
3008
3015
:param revision_id: allows creating a working tree at a different
3009
3016
revision than the branch is at.
3010
3017
:param from_branch: Branch to checkout