~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

  • Committer: Jelmer Vernooij
  • Date: 2011-11-25 17:54:52 UTC
  • mfrom: (6303 +trunk)
  • mto: This revision was merged to the branch mainline in revision 6321.
  • Revision ID: jelmer@samba.org-20111125175452-v0uwwxqcp97tzuzv
Merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
259
259
        """
260
260
        if path is None:
261
261
            path = osutils.getcwd()
262
 
        control = bzrdir.BzrDir.open(path, _unsupported)
 
262
        control = controldir.ControlDir.open(path, _unsupported)
263
263
        return control.open_workingtree(_unsupported)
264
264
 
265
265
    @staticmethod
277
277
        """
278
278
        if path is None:
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
282
282
 
283
283
    @staticmethod
366
366
            else:
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]
372
372
 
494
494
        raise NotImplementedError(self.get_root_id)
495
495
 
496
496
    @needs_read_lock
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.
499
499
 
500
500
        Specifically modified files are kept as modified, but
501
501
        ignored and unknown files are discarded.
502
502
 
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()
504
504
 
505
505
        revision
506
506
            If not None, the cloned tree will have its last revision set to
508
508
            and this one merged in.
509
509
        """
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)
513
513
        return result
514
514
 
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:
 
526
                new_parents = []
 
527
            else:
 
528
                new_parents = [revision_id]
 
529
            tree.set_parent_ids(new_parents)
526
530
 
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)
1009
1013
                finally:
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
1013
1017
                # tree data.
1014
 
                parent_trees = [(self.branch.last_revision(), new_basis_tree)]
 
1018
                parent_trees = []
 
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
2983
2990
 
2984
2991
    @classmethod
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."""
2987
2994
        try:
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)
2992
2999
 
2993
3000
    @classmethod
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."""
2996
3003
        try:
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")
3002
3009
 
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.
3006
3013
 
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