21
from cStringIO import StringIO
23
24
from bzrlib.trace import mutter, note
24
from bzrlib.errors import BzrError
25
from bzrlib.errors import BzrError, BzrCheckError
25
26
from bzrlib.inventory import Inventory
26
27
from bzrlib.osutils import pumpfile, appendpath, fingerprint_file
92
93
"store is probably damaged/corrupt"])
95
def print_file(self, fileid):
96
"""Print file with id `fileid` to stdout."""
96
def print_file(self, file_id):
97
"""Print file with id `file_id` to stdout."""
98
pumpfile(self.get_file(fileid), sys.stdout)
99
sys.stdout.write(self.get_file_text(file_id))
101
102
def export(self, dest, format='dir', root=None):
119
120
or at least passing a description to the constructor.
122
def __init__(self, store, inv):
123
def __init__(self, weave_store, inv, revision_id):
124
self._weave_store = weave_store
124
125
self._inventory = inv
126
self._revision_id = revision_id
128
def get_file_text(self, file_id):
129
ie = self._inventory[file_id]
130
weave = self._weave_store.get_weave(file_id)
131
idx = weave.lookup(self._revision_id)
132
content = weave.get_text(idx)
133
if len(content) != ie.text_size:
134
raise BzrCheckError('mismatched size on revision %s of file %s: '
136
% (self._revision_id, file_id, len(content),
126
140
def get_file(self, file_id):
127
ie = self._inventory[file_id]
128
f = self._store[ie.text_id]
129
mutter(" get fileid{%s} from %r" % (file_id, self))
130
self._check_retrieved(ie, f)
141
return StringIO(self.get_file_text(file_id))
133
143
def get_file_size(self, file_id):
134
144
return self._inventory[file_id].text_size