103
103
self._inventory = inv
105
105
def get_file_mtime(self, file_id, path=None):
106
ie = self.inventory[file_id]
106
inv, inv_file_id = self._unpack_file_id(file_id)
107
ie = inv[inv_file_id]
108
109
revision = self._repository.get_revision(ie.revision)
109
110
except errors.NoSuchRevision:
111
112
return revision.timestamp
113
114
def get_file_size(self, file_id):
114
return self.inventory[file_id].text_size
115
inv, inv_file_id = self._unpack_file_id(file_id)
116
return inv[inv_file_id].text_size
116
118
def get_file_sha1(self, file_id, path=None, stat_value=None):
117
ie = self.inventory[file_id]
119
inv, inv_file_id = self._unpack_file_id(file_id)
120
ie = inv[inv_file_id]
118
121
if ie.kind == "file":
119
122
return ie.text_sha1
122
125
def get_file_revision(self, file_id, path=None):
123
ie = self.inventory[file_id]
126
inv, inv_file_id = self._unpack_file_id(file_id)
127
ie = inv[inv_file_id]
124
128
return ie.revision
126
130
def is_executable(self, file_id, path=None):
127
ie = self.inventory[file_id]
131
inv, inv_file_id = self._unpack_file_id(file_id)
132
ie = inv[inv_file_id]
128
133
if ie.kind != "file":
130
135
return ie.executable
151
155
yield path, 'V', entry.kind, entry.file_id, entry
153
157
def get_symlink_target(self, file_id, path=None):
154
ie = self.inventory[file_id]
158
inv, inv_file_id = self._unpack_file_id(file_id)
159
ie = inv[inv_file_id]
155
160
# Inventories store symlink targets in unicode
156
161
return ie.symlink_target
158
163
def get_reference_revision(self, file_id, path=None):
159
return self.inventory[file_id].reference_revision
164
inv, inv_file_id = self._unpack_file_id(file_id)
165
return inv[inv_file_id].reference_revision
161
167
def get_root_id(self):
162
168
if self.inventory.root:
163
169
return self.inventory.root.file_id
165
171
def kind(self, file_id):
166
return self.inventory[file_id].kind
172
inv, inv_file_id = self._unpack_file_id(file_id)
173
return inv[inv_file_id].kind
168
175
def path_content_summary(self, path):
169
176
"""See Tree.path_content_summary."""
170
file_id = self.path2id(path)
177
inv, file_id = self._path2inv_file_id(path)
171
178
if file_id is None:
172
179
return ('missing', None, None, None)
173
entry = self.inventory[file_id]
174
181
kind = entry.kind
175
182
if kind == 'file':
176
183
return (kind, entry.text_size, entry.executable, entry.text_sha1)