~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2006-06-06 11:04:45 UTC
  • mfrom: (1740.1.2 bzr.mbp.integration)
  • Revision ID: pqm@pqm.ubuntu.com-20060606110445-79d71fb5b8e9fa8e
(mbp,jamesh) show file times; doc

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 appendpath, fingerprint_file
 
27
from bzrlib.osutils import 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)))
113
124
        
114
125
        
115
126
class RevisionTree(Tree):
128
139
        self._inventory = inv
129
140
        self._revision_id = revision_id
130
141
 
 
142
    def get_revision_id(self):
 
143
        """Return the revision id associated with this tree."""
 
144
        return self._revision_id
 
145
 
131
146
    def get_weave(self, file_id):
132
 
        import bzrlib.transactions as transactions
133
147
        return self._weave_store.get_weave(file_id,
134
148
                self._branch.get_transaction())
135
149
 
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
 
 
141
150
    def get_file_lines(self, file_id):
142
151
        ie = self._inventory[file_id]
143
152
        weave = self.get_weave(file_id)
144
 
        return weave.get(ie.revision)
 
153
        return weave.get_lines(ie.revision)
145
154
 
146
155
    def get_file_text(self, file_id):
147
156
        return ''.join(self.get_file_lines(file_id))
152
161
    def get_file_size(self, file_id):
153
162
        return self._inventory[file_id].text_size
154
163
 
155
 
    def get_file_sha1(self, file_id):
 
164
    def get_file_sha1(self, file_id, path=None):
156
165
        ie = self._inventory[file_id]
157
166
        if ie.kind == "file":
158
167
            return ie.text_sha1
159
 
 
160
 
    def is_executable(self, file_id):
 
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):
161
176
        ie = self._inventory[file_id]
162
177
        if ie.kind != "file":
163
178
            return None 
205
220
    def __contains__(self, file_id):
206
221
        return file_id in self._inventory
207
222
 
208
 
    def get_file_sha1(self, file_id):
 
223
    def get_file_sha1(self, file_id, path=None):
209
224
        assert self._inventory[file_id].kind == "root_directory"
210
225
        return None
211
226