~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/revisiontree.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2008-06-05 04:05:05 UTC
  • mfrom: (3473.1.1 ianc-integration)
  • Revision ID: pqm@pqm.ubuntu.com-20080605040505-i9kqxg2fps2qjdi0
Add the 'alias' command (Tim Penhey)

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
from cStringIO import StringIO
20
20
 
21
21
from bzrlib import (
22
 
    errors,
23
22
    osutils,
24
23
    revision,
25
24
    symbol_versioning,
40
39
        # construction - this will mean that we can change the constructor
41
40
        # with much less chance of breaking client code.
42
41
        self._repository = branch
 
42
        self._weave_store = branch.weave_store
43
43
        self._inventory = inv
44
44
        self._revision_id = revision_id
45
 
        self._rules_searcher = None
46
45
 
47
46
    def supports_tree_reference(self):
48
47
        return True
63
62
        """Return the revision id associated with this tree."""
64
63
        return self._revision_id
65
64
 
66
 
    def get_file_text(self, file_id, path=None):
67
 
        return list(self.iter_files_bytes([(file_id, None)]))[0][1]
 
65
    def _get_weave(self, file_id):
 
66
        return self._weave_store.get_weave(file_id,
 
67
                self._repository.get_transaction())
 
68
 
 
69
    def get_file_lines(self, file_id):
 
70
        ie = self._inventory[file_id]
 
71
        weave = self._get_weave(file_id)
 
72
        return weave.get_lines(ie.revision)
 
73
 
 
74
    def get_file_text(self, file_id):
 
75
        return ''.join(self.get_file_lines(file_id))
68
76
 
69
77
    def get_file(self, file_id, path=None):
70
78
        return StringIO(self.get_file_text(file_id))
71
79
 
72
80
    def iter_files_bytes(self, desired_files):
73
 
        """See Tree.iter_files_bytes.
 
81
        """See Tree.extract_files_bytes.
74
82
 
75
83
        This version is implemented on top of Repository.extract_files_bytes"""
76
84
        repo_desired_files = [(f, self.inventory[f].revision, i)
77
85
                              for f, i in desired_files]
78
 
        try:
79
 
            for result in self._repository.iter_files_bytes(repo_desired_files):
80
 
                yield result
81
 
        except errors.RevisionNotPresent, e:
82
 
            raise errors.NoSuchFile(e.revision_id)
 
86
        return self._repository.iter_files_bytes(repo_desired_files)
83
87
 
84
88
    def annotate_iter(self, file_id,
85
89
                      default_revision=revision.CURRENT_REVISION):
86
90
        """See Tree.annotate_iter"""
87
 
        text_key = (file_id, self.inventory[file_id].revision)
88
 
        annotations = self._repository.texts.annotate(text_key)
89
 
        return [(key[-1], line) for key, line in annotations]
 
91
        w = self._get_weave(file_id)
 
92
        return w.annotate(self.inventory[file_id].revision)
90
93
 
91
94
    def get_file_size(self, file_id):
92
95
        """See Tree.get_file_size"""
200
203
            for dir in reversed(dirblock):
201
204
                if dir[2] == _directory:
202
205
                    pending.append(dir)
203
 
 
204
 
    def _get_rules_searcher(self, default_searcher):
205
 
        """See Tree._get_rules_searcher."""
206
 
        if self._rules_searcher is None:
207
 
            self._rules_searcher = super(RevisionTree,
208
 
                self)._get_rules_searcher(default_searcher)
209
 
        return self._rules_searcher