/breezy-svn/trunk

To get this branch, use:
bzr branch https://code.breezy-vcs.org/breezy-svn/trunk

« back to all changes in this revision

Viewing changes to tree.py

  • Committer: Jelmer Vernooij
  • Date: 2018-11-16 15:35:20 UTC
  • Revision ID: jelmer@jelmer.uk-20181116153520-r0artr6h3u30hsf7
Drop use of file_id in Tree.

Show diffs side-by-side

added added

removed removed

Lines of Context:
109
109
 
110
110
class SubversionTree(object):
111
111
 
112
 
    def get_file_properties(self, path, file_id=None):
 
112
    def get_file_properties(self, path):
113
113
        raise NotImplementedError(self.get_file_properties)
114
114
 
115
115
    def supports_content_filtering(self):
189
189
            return None, False, None
190
190
        return entry.kind, entry.executable, None
191
191
 
192
 
    def get_file_mtime(self, path, file_id=None):
 
192
    def get_file_mtime(self, path):
193
193
        """See Tree.get_file_mtime."""
194
 
        revid = self.get_file_revision(path, file_id)
 
194
        revid = self.get_file_revision(path)
195
195
        try:
196
196
            rev = self._repository.get_revision(revid)
197
197
        except errors.NoSuchRevision:
198
198
            raise errors.FileTimestampUnavailable(path)
199
199
        return rev.timestamp
200
200
 
201
 
    def is_executable(self, path, file_id=None):
202
 
        props = self.get_file_properties(path, file_id)
 
201
    def is_executable(self, path):
 
202
        props = self.get_file_properties(path)
203
203
        if props.has_key(properties.PROP_SPECIAL):
204
204
            text = self.get_file_stream_by_path(path)
205
205
            if text.read(5) == "link ":
206
206
                return False
207
207
        return props.has_key(properties.PROP_EXECUTABLE)
208
208
 
209
 
    def get_symlink_target(self, path, file_id=None):
210
 
        props = self.get_file_properties(path, file_id)
 
209
    def get_symlink_target(self, path):
 
210
        props = self.get_file_properties(path)
211
211
        if not props.has_key(properties.PROP_SPECIAL):
212
212
            return None
213
213
        text = self.get_file_stream_by_path(path).read()
215
215
            return None
216
216
        return text[len("link "):].decode("utf-8")
217
217
 
218
 
    def get_file_sha1(self, path, file_id=None, stat_value=None):
219
 
        return osutils.sha_string(self.get_file_text(path, file_id))
 
218
    def get_file_sha1(self, path, stat_value=None):
 
219
        return osutils.sha_string(self.get_file_text(path))
220
220
 
221
 
    def get_file_revision(self, path, file_id=None):
 
221
    def get_file_revision(self, path):
222
222
        file_id, file_revision = self.lookup_id(path)
223
223
        return file_revision
224
224
 
230
230
    def get_file_stream_by_path(self, path):
231
231
        raise NotImplementedError(self.get_file_stream_by_path)
232
232
 
233
 
    def iter_child_entries(self, path, file_id=None):
 
233
    def iter_child_entries(self, path):
234
234
        entry = self.iter_entries_by_dir(specific_files=[path]).next()[1]
235
235
        return iter(getattr(entry, 'children', {}).values())
236
236
 
244
244
 
245
245
        :param paths: The filenames to find related paths for (if None, returns
246
246
            None)
247
 
        :param trees: The trees to find file_ids within
 
247
        :param trees: The trees to find paths within
248
248
        :param require_versioned: if true, all specified filenames must occur in
249
249
            at least one tree.
250
250
        :return: a set of paths for the specified filenames and their children
251
251
            in `tree`
252
252
        """
 
253
        # TODO(jelmer): Implement this without file ids
253
254
        if paths is None:
254
 
            return None;
 
255
            return None
255
256
        file_ids = self.paths2ids(
256
257
                paths, trees, require_versioned=require_versioned)
257
258
        ret = set()
392
393
        return self.root_inventory.iter_entries_by_dir(
393
394
            specific_file_ids=specific_file_ids)
394
395
 
395
 
    def kind(self, path, file_id=None):
 
396
    def kind(self, path):
396
397
        stream = BytesIO()
397
398
        try:
398
399
            (fetched_rev, props) = self.transport.get_file(path,
407
408
            return "symlink"
408
409
        return "file"
409
410
 
410
 
    def get_file_size(self, path, file_id=None):
411
 
        if file_id is None:
412
 
            file_id = self.path2id(path)
 
411
    def get_file_size(self, path):
 
412
        file_id = self.path2id(path)
413
413
        # FIXME: More efficient implementation?
414
414
        return self.root_inventory.get_entry(file_id).text_size
415
415
 
431
431
        for path, entry in entries:
432
432
            yield path, 'V', entry.kind, entry.file_id, entry
433
433
 
434
 
    def get_file(self, path, file_id=None):
 
434
    def get_file(self, path):
435
435
        stream = BytesIO()
436
436
        (fetched_rev, props) = self.transport.get_file(path,
437
437
                stream, self._revmeta.metarev.revnum)
447
447
        stream.seek(0)
448
448
        return stream
449
449
 
450
 
    def get_file_text(self, path, file_id=None):
451
 
        with self.get_file(path, file_id) as my_file:
 
450
    def get_file_text(self, path):
 
451
        with self.get_file(path) as my_file:
452
452
            return my_file.read()
453
453
 
454
 
    def get_file_properties(self, path, file_id=None):
 
454
    def get_file_properties(self, path):
455
455
        try:
456
456
            (fetched_rev, props) = self.transport.get_file(path,
457
457
                    BytesIO(), self._revmeta.metarev.revnum)
729
729
        wt_path = self.workingtree.abspath(name)
730
730
        return wc.get_pristine_contents(wt_path)
731
731
 
732
 
    def kind(self, path, file_id=None):
733
 
        if file_id is None:
734
 
            file_id = self.path2id(path)
 
732
    def kind(self, path):
 
733
        file_id = self.path2id(path)
735
734
        if file_id is None:
736
735
            raise errors.NoSuchFile(path, self)
737
736
        return self.root_inventory.get_entry(file_id).kind
738
737
 
739
 
    def get_file_text(self, path, file_id=None):
 
738
    def get_file_text(self, path):
740
739
        """See Tree.get_file_text()."""
741
740
        f = self.get_file_stream_by_path(path)
742
741
        try:
744
743
        finally:
745
744
            f.close()
746
745
 
747
 
    def get_file(self, path, file_id=None):
 
746
    def get_file(self, path):
748
747
        return self.get_file_stream_by_path(path)
749
748
 
750
 
    def get_file_properties(self, path, file_id=None):
 
749
    def get_file_properties(self, path):
751
750
        """See SubversionTree.get_file_properties()."""
752
751
        abspath = self.workingtree.abspath(path)
753
752
        if not os.path.isdir(abspath.encode(osutils._fs_enc)):
758
757
            (_, orig_props) = wc.get_prop_diffs(abspath.encode("utf-8"))
759
758
        return orig_props
760
759
 
761
 
    def annotate_iter(self, path, file_id=None, default_revision=CURRENT_REVISION):
 
760
    def annotate_iter(self, path, default_revision=CURRENT_REVISION):
762
761
        from .annotate import Annotater
763
762
        annotater = Annotater(self.workingtree.branch.repository)
764
763
        annotater.check_file_revs(