223
223
def get_file_text(self, file_id):
224
224
entry = self._inventory[file_id]
225
225
if entry.kind == 'directory': return ""
226
return self._repository._git.blob(entry.text_id).data
226
return self._repository._git.get_blob(entry.text_id).data
228
228
def _build_inventory(self, tree_id, ie, path):
229
229
assert isinstance(path, str)
236
236
child_path = urlutils.join(path, name)
237
237
file_id = escape_file_id(child_path.encode('utf-8'))
238
entry_kind = (mode & 0700000) / 0100000
239
240
child_ie = inventory.InventoryDirectory(file_id, basename, ie.file_id)
241
elif entry_kind == 1:
242
file_kind = (mode & 070000) / 010000
243
b = self._repository._git.get_blob(hexsha)
242
245
child_ie = inventory.InventoryFile(file_id, basename, ie.file_id)
243
246
child_ie.text_sha1 = osutils.sha_string(b.data)
245
248
child_ie = inventory.InventoryLink(file_id, basename, ie.file_id)
246
249
child_ie.text_sha1 = osutils.sha_string("")
248
251
raise AssertionError(
249
"Unknown file kind, perms=%r." % (mode,))
252
"Unknown file kind, perms=%o." % (mode,))
250
253
child_ie.text_id = b.id
251
child_ie.text_size = b.size
254
child_ie.text_size = len(b.data)
253
256
raise AssertionError(
254
257
"Unknown blob kind, perms=%r." % (mode,))
255
child_ie.executable = bool(int(mode[3:], 8) & 0111)
258
fs_mode = mode & 0777
259
child_ie.executable = bool(fs_mode & 0111)
256
260
child_ie.revision = self.revision_id
257
261
self._inventory.add(child_ie)
259
self._build_inventory(b, child_ie, child_path)
263
self._build_inventory(hexsha, child_ie, child_path)
262
266
class GitFormat(object):