1
# Copyright (C) 2008, 2009, 2010 Canonical Ltd
1
# Copyright (C) 2008-2011 Canonical Ltd
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
421
421
inventory_keys = source_vf.keys()
422
422
missing_inventories = set(self.revision_keys).difference(inventory_keys)
423
423
if missing_inventories:
424
missing_inventories = sorted(missing_inventories)
425
raise ValueError('We are missing inventories for revisions: %s'
426
% (missing_inventories,))
424
# Go back to the original repo, to see if these are really missing
425
# https://bugs.launchpad.net/bzr/+bug/437003
426
# If we are packing a subset of the repo, it is fine to just have
427
# the data in another Pack file, which is not included in this pack
429
inv_index = self._pack_collection.repo.inventories._index
430
pmap = inv_index.get_parent_map(missing_inventories)
431
really_missing = missing_inventories.difference(pmap)
433
missing_inventories = sorted(really_missing)
434
raise ValueError('We are missing inventories for revisions: %s'
435
% (missing_inventories,))
427
436
self._copy_stream(source_vf, target_vf, inventory_keys,
428
437
'inventories', self._get_filtered_inv_stream, 2)
1344
class RepositoryFormatCHK1(RepositoryFormatPack):
1345
"""A hashed CHK+group compress pack repository."""
1351
class RepositoryFormat2a(RepositoryFormatPack):
1352
"""A CHK repository that uses the bencode revision serializer."""
1347
1354
repository_class = CHKInventoryRepository
1348
1355
supports_external_lookups = True
1349
1356
supports_chks = True
1350
# For right now, setting this to True gives us InterModel1And2 rather
1351
# than InterDifferingSerializer
1352
1357
_commit_builder_class = PackRootCommitBuilder
1353
1358
rich_root_data = True
1354
_serializer = chk_serializer.chk_serializer_255_bigpage
1359
_serializer = chk_serializer.chk_bencode_serializer
1355
1360
_commit_inv_deltas = True
1356
1361
# What index classes to use
1357
1362
index_builder_class = BTreeBuilder
1368
1373
pack_compresses = True
1370
1375
def _get_matching_bzrdir(self):
1371
return bzrdir.format_registry.make_bzrdir('development6-rich-root')
1373
def _ignore_setting_bzrdir(self, format):
1376
_matchingbzrdir = property(_get_matching_bzrdir, _ignore_setting_bzrdir)
1378
def get_format_string(self):
1379
"""See RepositoryFormat.get_format_string()."""
1380
return ('Bazaar development format - group compression and chk inventory'
1381
' (needs bzr.dev from 1.14)\n')
1383
def get_format_description(self):
1384
"""See RepositoryFormat.get_format_description()."""
1385
return ("Development repository format - rich roots, group compression"
1386
" and chk inventories")
1389
class RepositoryFormatCHK2(RepositoryFormatCHK1):
1390
"""A CHK repository that uses the bencode revision serializer."""
1392
_serializer = chk_serializer.chk_bencode_serializer
1394
def _get_matching_bzrdir(self):
1395
return bzrdir.format_registry.make_bzrdir('development7-rich-root')
1397
def _ignore_setting_bzrdir(self, format):
1400
_matchingbzrdir = property(_get_matching_bzrdir, _ignore_setting_bzrdir)
1402
def get_format_string(self):
1403
"""See RepositoryFormat.get_format_string()."""
1404
return ('Bazaar development format - chk repository with bencode '
1405
'revision serialization (needs bzr.dev from 1.16)\n')
1408
class RepositoryFormat2a(RepositoryFormatCHK2):
1409
"""A CHK repository that uses the bencode revision serializer.
1411
This is the same as RepositoryFormatCHK2 but with a public name.
1414
_serializer = chk_serializer.chk_bencode_serializer
1416
def _get_matching_bzrdir(self):
1417
1376
return bzrdir.format_registry.make_bzrdir('2a')
1419
1378
def _ignore_setting_bzrdir(self, format):