~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

first cut at merge from integration.

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
from bzrlib.trace import mutter, note
25
25
from bzrlib.errors import BzrError, BzrCheckError
26
26
from bzrlib.inventory import Inventory
27
 
from bzrlib.osutils import fingerprint_file
 
27
from bzrlib.osutils import appendpath, fingerprint_file
28
28
 
29
29
class Tree(object):
30
30
    """Abstract file tree.
110
110
 
111
111
    def unlock(self):
112
112
        pass
113
 
 
114
 
    def filter_unversioned_files(self, paths):
115
 
        """Filter out paths that are not versioned.
116
 
 
117
 
        :return: set of paths.
118
 
        """
119
 
        # NB: we specifically *don't* call self.has_filename, because for
120
 
        # WorkingTrees that can indicate files that exist on disk but that 
121
 
        # are not versioned.
122
 
        pred = self.inventory.has_filename
123
 
        return set((p for p in paths if not pred(p)))
124
113
        
125
114
        
126
115
class RevisionTree(Tree):
139
128
        self._inventory = inv
140
129
        self._revision_id = revision_id
141
130
 
142
 
    def get_revision_id(self):
143
 
        """Return the revision id associated with this tree."""
144
 
        return self._revision_id
145
 
 
146
131
    def get_weave(self, file_id):
 
132
        import bzrlib.transactions as transactions
147
133
        return self._weave_store.get_weave(file_id,
148
134
                self._branch.get_transaction())
149
135
 
 
136
    def get_weave_prelude(self, file_id):
 
137
        import bzrlib.transactions as transactions
 
138
        return self._weave_store.get_weave_prelude(file_id,
 
139
                self._branch.get_transaction())
 
140
 
150
141
    def get_file_lines(self, file_id):
151
142
        ie = self._inventory[file_id]
152
143
        weave = self.get_weave(file_id)
153
 
        return weave.get_lines(ie.revision)
 
144
        return weave.get(ie.revision)
154
145
 
155
146
    def get_file_text(self, file_id):
156
147
        return ''.join(self.get_file_lines(file_id))
161
152
    def get_file_size(self, file_id):
162
153
        return self._inventory[file_id].text_size
163
154
 
164
 
    def get_file_sha1(self, file_id, path=None):
 
155
    def get_file_sha1(self, file_id):
165
156
        ie = self._inventory[file_id]
166
157
        if ie.kind == "file":
167
158
            return ie.text_sha1
168
 
        return None
169
 
 
170
 
    def get_file_mtime(self, file_id, path=None):
171
 
        ie = self._inventory[file_id]
172
 
        revision = self._branch.get_revision(ie.revision)
173
 
        return revision.timestamp
174
 
 
175
 
    def is_executable(self, file_id, path=None):
 
159
 
 
160
    def is_executable(self, file_id):
176
161
        ie = self._inventory[file_id]
177
162
        if ie.kind != "file":
178
163
            return None 
220
205
    def __contains__(self, file_id):
221
206
        return file_id in self._inventory
222
207
 
223
 
    def get_file_sha1(self, file_id, path=None):
 
208
    def get_file_sha1(self, file_id):
224
209
        assert self._inventory[file_id].kind == "root_directory"
225
210
        return None
226
211