~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

[merge] from robert

Show diffs side-by-side

added added

removed removed

Lines of Context:
23
23
import os
24
24
import stat
25
25
import fnmatch
26
 
        
 
26
 
 
27
from bzrlib.branch import Branch
27
28
import bzrlib.tree
28
 
from bzrlib.osutils import appendpath, file_kind, isdir, splitpath
 
29
from bzrlib.osutils import appendpath, file_kind, isdir, splitpath, relpath
29
30
from bzrlib.errors import BzrCheckError
30
31
from bzrlib.trace import mutter
31
32
 
93
94
    It is possible for a `WorkingTree` to have a filename which is
94
95
    not listed in the Inventory and vice versa.
95
96
    """
96
 
    def __init__(self, basedir, inv):
 
97
    def __init__(self, basedir, branch=None):
 
98
        """Construct a WorkingTree for basedir.
 
99
 
 
100
        If the branch is not supplied, it is opened automatically.
 
101
        If the branch is supplied, it must be the branch for this basedir.
 
102
        (branch.base is not cross checked, because for remote branches that
 
103
        would be meaningless).
 
104
        """
97
105
        from bzrlib.hashcache import HashCache
98
106
        from bzrlib.trace import note, mutter
99
107
 
100
 
        self._inventory = inv
 
108
        if branch is None:
 
109
            branch = Branch.open(basedir)
 
110
        self._inventory = branch.inventory
 
111
        self.path2id = self._inventory.path2id
 
112
        self.branch = branch
101
113
        self.basedir = basedir
102
 
        self.path2id = inv.path2id
103
114
 
104
115
        # update the whole cache up front and write to disk if anything changed;
105
116
        # in the future we might want to do this more selectively
138
149
    def abspath(self, filename):
139
150
        return os.path.join(self.basedir, filename)
140
151
 
 
152
    def relpath(self, abspath):
 
153
        """Return the local path portion from a given absolute path."""
 
154
        return relpath(self.basedir, abspath)
 
155
 
141
156
    def has_filename(self, filename):
142
157
        return bzrlib.osutils.lexists(self.abspath(filename))
143
158