120
120
"Mismatch between inventory revision" \
121
121
" id and insertion revid (%r, %r)" % (inv.revision_id, revision_id)
122
122
assert inv.root is not None
123
inv_text = self.serialise_inventory(inv)
124
inv_sha1 = osutils.sha_string(inv_text)
125
inv_vf = self.control_weaves.get_weave('inventory',
126
self.get_transaction())
127
self._inventory_add_lines(inv_vf, revision_id, parents,
128
osutils.split_lines(inv_text), check_content=False)
123
inv_lines = self._serialise_inventory_to_lines(inv)
124
inv_vf = self.get_inventory_weave()
125
return self._inventory_add_lines(inv_vf, revision_id, parents,
126
inv_lines, check_content=False)
131
128
def _inventory_add_lines(self, inv_vf, revision_id, parents, lines,
132
129
check_content=True):
130
"""Store lines in inv_vf and return the sha1 of the inventory."""
133
131
final_parents = []
134
132
for parent in parents:
135
133
if parent in inv_vf:
136
134
final_parents.append(parent)
137
inv_vf.add_lines(revision_id, final_parents, lines,
138
check_content=check_content)
135
return inv_vf.add_lines(revision_id, final_parents, lines,
136
check_content=check_content)[0]
140
138
@needs_write_lock
141
139
def add_revision(self, revision_id, rev, inv=None, config=None):
842
840
def serialise_inventory(self, inv):
843
841
return self._serializer.write_inventory_to_string(inv)
843
def _serialise_inventory_to_lines(self, inv):
844
return self._serializer.write_inventory_to_lines(inv)
845
846
def get_serializer_format(self):
846
847
return self._serializer.format_num