1189
1189
def _cache_basis_inventory(self, new_revision):
1190
1190
"""Cache new_revision as the basis inventory."""
1191
# TODO: this should allow the ready-to-use inventory to be passed in,
1192
# as commit already has that ready-to-use [while the format is the
1192
1195
# this double handles the inventory - unpack and repack -
1193
1196
# but is easier to understand. We can/should put a conditional
1194
1197
# in here based on whether the inventory is in the latest format
1195
1198
# - perhaps we should repack all inventories on a repository
1197
inv = self.branch.repository.get_inventory(new_revision)
1198
inv.revision_id = new_revision
1199
xml = bzrlib.xml5.serializer_v5.write_inventory_to_string(inv)
1200
# the fast path is to copy the raw xml from the repository. If the
1201
# xml contains 'revision_id="', then we assume the right
1202
# revision_id is set. We must check for this full string, because a
1203
# root node id can legitimately look like 'revision_id' but cannot
1205
xml = self.branch.repository.get_inventory_xml(new_revision)
1206
if not 'revision_id="' in xml.split('\n', 1)[0]:
1207
inv = self.branch.repository.deserialise_inventory(
1209
inv.revision_id = new_revision
1210
xml = bzrlib.xml5.serializer_v5.write_inventory_to_string(inv)
1201
1212
path = self._basis_inventory_name()
1202
1213
self._control_files.put_utf8(path, xml)