~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/workingtree_4.py

Allow file ids in the tree API to be tuples.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1877
1877
 
1878
1878
    @needs_read_lock
1879
1879
    def get_file_revision(self, file_id):
1880
 
        return self.inventory[file_id].revision
 
1880
        inv, inv_file_id = self._unpack_file_id(file_id)
 
1881
        return inv[inv_file_id].revision
1881
1882
 
1882
1883
    def get_file(self, file_id, path=None):
1883
1884
        return StringIO(self.get_file_text(file_id))
1884
1885
 
1885
1886
    def get_file_size(self, file_id):
1886
1887
        """See Tree.get_file_size"""
1887
 
        return self.inventory[file_id].text_size
 
1888
        inv, inv_file_id = self._unpack_file_id(file_id)
 
1889
        return inv[inv_file_id].text_size
1888
1890
 
1889
1891
    def get_file_text(self, file_id, path=None):
1890
1892
        _, content = list(self.iter_files_bytes([(file_id, None)]))[0]
1891
1893
        return ''.join(content)
1892
1894
 
1893
1895
    def get_reference_revision(self, file_id, path=None):
1894
 
        return self.inventory[file_id].reference_revision
 
1896
        inv, inv_file_id = self._unpack_file_id(file_id)
 
1897
        return inv[inv_file_id].reference_revision
1895
1898
 
1896
1899
    def iter_files_bytes(self, desired_files):
1897
1900
        """See Tree.iter_files_bytes.
1951
1954
 
1952
1955
    def path_content_summary(self, path):
1953
1956
        """See Tree.path_content_summary."""
1954
 
        file_id = self.path2id(path)
1955
 
        if file_id is None:
 
1957
        inv, inv_file_id = self._path2inv_file_id(path)
 
1958
        if inv_file_id is None:
1956
1959
            return ('missing', None, None, None)
1957
 
        entry = self.inventory[file_id]
 
1960
        entry = inv[inv_file_id]
1958
1961
        kind = entry.kind
1959
1962
        if kind == 'file':
1960
1963
            return (kind, entry.text_size, entry.executable, entry.text_sha1)
1964
1967
            return (kind, None, None, None)
1965
1968
 
1966
1969
    def is_executable(self, file_id, path=None):
1967
 
        ie = self.inventory[file_id]
 
1970
        inv, inv_file_id = self._unpack_file_id(file_id)
 
1971
        ie = inv[inv_file_id]
1968
1972
        if ie.kind != "file":
1969
1973
            return False
1970
1974
        return ie.executable
1979
1983
            inv = self.inventory
1980
1984
            from_dir_id = None
1981
1985
        else:
1982
 
            inv = self.inventory
1983
 
            from_dir_id = self.path2id(from_dir)
 
1986
            inv, from_dir_id = self._path2inv_file_id(from_dir)
1984
1987
            if from_dir_id is None:
1985
1988
                # Directory not versioned
1986
1989
                return