/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/workingtree.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2009-03-20 05:08:48 UTC
  • mfrom: (4171.1.1 ianc-integration)
  • Revision ID: pqm@pqm.ubuntu.com-20090320050848-c1wdgzf5kkfdt1ys
Content filters (Ian Clatworthy)

Show diffs side-by-side

added added

removed removed

Lines of Context:
103
103
    splitpath,
104
104
    supports_executable,
105
105
    )
 
106
from bzrlib.filters import filtered_input_file
106
107
from bzrlib.trace import mutter, note
107
108
from bzrlib.transport.local import LocalTransport
108
109
from bzrlib.progress import DummyProgress, ProgressPhase
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
235
237
        hc.read()
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))
437
439
 
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]
440
442
 
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,
 
444
        _fstat=os.fstat):
442
445
        """See MutableTree.get_file_with_stat."""
443
446
        if path is None:
444
447
            path = self.id2path(file_id)
445
 
        file_obj = self.get_file_byname(path)
446
 
        return (file_obj, _fstat(file_obj.fileno()))
447
 
 
448
 
    def get_file_byname(self, filename):
449
 
        return file(self.abspath(filename), 'rb')
450
 
 
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)
 
454
 
 
455
    def get_file_text(self, file_id, path=None, filtered=True):
 
456
        return self.get_file(file_id, path=path, filtered=filtered).read()
 
457
 
 
458
    def get_file_byname(self, filename, filtered=True):
 
459
        path = self.abspath(filename)
 
460
        f = file(path, 'rb')
 
461
        if self.supports_content_filtering() and filtered:
 
462
            filters = self._content_filter_stack(filename)
 
463
            return filtered_input_file(f, filters)
 
464
        else:
 
465
            return f
 
466
 
 
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)
454
470
        try:
455
471
            return file.readlines()
456
472
        finally: