390
390
"Mismatch between inventory revision" \
391
391
" id and insertion revid (%r, %r)" % (inv.revision_id, revision_id)
392
392
assert inv.root is not None
393
inv_text = self.serialise_inventory(inv)
394
inv_sha1 = osutils.sha_string(inv_text)
395
inv_vf = self.control_weaves.get_weave('inventory',
396
self.get_transaction())
397
self._inventory_add_lines(inv_vf, revision_id, parents,
398
osutils.split_lines(inv_text), check_content=False)
393
inv_lines = self._serialise_inventory_to_lines(inv)
394
inv_vf = self.get_inventory_weave()
395
return self._inventory_add_lines(inv_vf, revision_id, parents,
396
inv_lines, check_content=False)
401
398
def _inventory_add_lines(self, inv_vf, revision_id, parents, lines,
402
399
check_content=True):
400
"""Store lines in inv_vf and return the sha1 of the inventory."""
403
401
final_parents = []
404
402
for parent in parents:
405
403
if parent in inv_vf:
406
404
final_parents.append(parent)
407
inv_vf.add_lines(revision_id, final_parents, lines,
408
check_content=check_content)
405
return inv_vf.add_lines(revision_id, final_parents, lines,
406
check_content=check_content)[0]
410
408
@needs_write_lock
411
409
def add_revision(self, revision_id, rev, inv=None, config=None):
1112
1110
def serialise_inventory(self, inv):
1113
1111
return self._serializer.write_inventory_to_string(inv)
1113
def _serialise_inventory_to_lines(self, inv):
1114
return self._serializer.write_inventory_to_lines(inv)
1115
1116
def get_serializer_format(self):
1116
1117
return self._serializer.format_num