~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tree.py

  • Committer: Robert Collins
  • Date: 2005-09-30 04:52:11 UTC
  • mto: This revision was merged to the branch mainline in revision 1397.
  • Revision ID: robertc@robertcollins.net-20050930045210-1f157d2aaaa73c63
convert name_version to revision in inventory entries

Show diffs side-by-side

added added

removed removed

Lines of Context:
76
76
                         doc="Inventory of this Tree")
77
77
 
78
78
    def _check_retrieved(self, ie, f):
 
79
        if not __debug__:
 
80
            return  
79
81
        fp = fingerprint_file(f)
80
82
        f.seek(0)
81
83
        
127
129
 
128
130
    def get_weave(self, file_id):
129
131
        return self._weave_store.get_weave(file_id)
 
132
 
 
133
 
 
134
    def get_file_lines(self, file_id):
 
135
        ie = self._inventory[file_id]
 
136
        weave = self.get_weave(file_id)
 
137
        return weave.get(ie.text_version)
130
138
        
131
139
 
132
140
    def get_file_text(self, file_id):
133
 
        ie = self._inventory[file_id]
134
 
        weave = self.get_weave(file_id)
135
 
        idx = weave.lookup(ie.text_version)
136
 
        content = weave.get_text(idx)
137
 
        if len(content) != ie.text_size:
138
 
            raise BzrCheckError('mismatched size on revision %s of file %s: '
139
 
                                '%d vs %d bytes'
140
 
                                % (self._revision_id, file_id, len(content),
141
 
                                   ie.text_size))
142
 
        return content
 
141
        return ''.join(self.get_file_lines(file_id))
 
142
 
143
143
 
144
144
    def get_file(self, file_id):
145
145
        return StringIO(self.get_file_text(file_id))
160
160
        for path, entry in self.inventory.iter_entries():
161
161
            yield path, 'V', entry.kind, entry.file_id
162
162
 
 
163
    def get_symlink_target(self, file_id):
 
164
        ie = self._inventory[file_id]
 
165
        return ie.symlink_target;
163
166
 
164
167
class EmptyTree(Tree):
165
168
    def __init__(self):
166
169
        self._inventory = Inventory()
167
170
 
 
171
    def get_symlink_target(self, file_id):
 
172
        return None
 
173
 
168
174
    def has_filename(self, filename):
169
175
        return False
170
176
 
274
280
            os.mkdir(fullpath)
275
281
        elif kind == 'file':
276
282
            pumpfile(tree.get_file(ie.file_id), file(fullpath, 'wb'))
 
283
        elif kind == 'symlink':
 
284
            try:
 
285
                os.symlink(ie.symlink_target, fullpath)
 
286
            except OSError,e:
 
287
                raise BzrError("Failed to create symlink %r -> %r, error: %s" % (fullpath, ie.symlink_target, e))
277
288
        else:
278
289
            raise BzrError("don't know how to export {%s} of kind %r" % (ie.file_id, kind))
279
290
        mutter("  export {%s} kind %s to %s" % (ie.file_id, kind, fullpath))