230
231
wt_trans = self.bzrdir.get_workingtree_transport(None)
231
232
cache_filename = wt_trans.local_abspath('stat-cache')
232
233
self._hashcache = hashcache.HashCache(basedir, cache_filename,
233
self.bzrdir._get_file_mode())
234
self.bzrdir._get_file_mode(),
235
self._content_filter_stack_provider())
234
236
hc = self._hashcache
236
238
# is this scan needed ? it makes things kinda slow.
435
437
def has_filename(self, filename):
436
438
return osutils.lexists(self.abspath(filename))
438
def get_file(self, file_id, path=None):
439
return self.get_file_with_stat(file_id, path)[0]
440
def get_file(self, file_id, path=None, filtered=True):
441
return self.get_file_with_stat(file_id, path, filtered=filtered)[0]
441
def get_file_with_stat(self, file_id, path=None, _fstat=os.fstat):
443
def get_file_with_stat(self, file_id, path=None, filtered=True,
442
445
"""See MutableTree.get_file_with_stat."""
444
447
path = self.id2path(file_id)
445
file_obj = self.get_file_byname(path)
446
return (file_obj, _fstat(file_obj.fileno()))
448
def get_file_byname(self, filename):
449
return file(self.abspath(filename), 'rb')
451
def get_file_lines(self, file_id, path=None):
448
file_obj = self.get_file_byname(path, filtered=False)
449
stat_value = _fstat(file_obj.fileno())
450
if self.supports_content_filtering() and filtered:
451
filters = self._content_filter_stack(path)
452
file_obj = filtered_input_file(file_obj, filters)
453
return (file_obj, stat_value)
455
def get_file_text(self, file_id, path=None, filtered=True):
456
return self.get_file(file_id, path=path, filtered=filtered).read()
458
def get_file_byname(self, filename, filtered=True):
459
path = self.abspath(filename)
461
if self.supports_content_filtering() and filtered:
462
filters = self._content_filter_stack(filename)
463
return filtered_input_file(f, filters)
467
def get_file_lines(self, file_id, path=None, filtered=True):
452
468
"""See Tree.get_file_lines()"""
453
file = self.get_file(file_id, path)
469
file = self.get_file(file_id, path, filtered=filtered)
455
471
return file.readlines()