205
204
return self._get_revision_vf().get_parents(revision_id)
208
class KnitRepository2(KnitRepository):
207
class KnitRepository3(KnitRepository):
210
209
def __init__(self, _format, a_bzrdir, control_files, _revision_store,
211
210
control_store, text_store):
212
211
KnitRepository.__init__(self, _format, a_bzrdir, control_files,
213
212
_revision_store, control_store, text_store)
214
self._serializer = xml6.serializer_v6
213
self._serializer = xml7.serializer_v7
216
215
def deserialise_inventory(self, revision_id, xml):
217
216
"""Transform the xml into an inventory object.
252
251
committer, revprops, revision_id)
255
class KnitRepository3(KnitRepository2):
257
def __init__(self, _format, a_bzrdir, control_files, _revision_store,
258
control_store, text_store):
259
KnitRepository2.__init__(self, _format, a_bzrdir, control_files,
260
_revision_store, control_store, text_store)
261
self._serializer = xml7.serializer_v7
264
254
class RepositoryFormatKnit(MetaDirRepositoryFormat):
265
255
"""Bzr repository knit format (generalized).
403
class RepositoryFormatKnit2(RepositoryFormatKnit):
404
"""Bzr repository knit format 2.
406
THIS FORMAT IS EXPERIMENTAL
407
This repository format has:
408
- knits for file texts and inventory
409
- hash subdirectory based stores.
410
- knits for revisions and signatures
411
- TextStores for revisions and signatures.
412
- a format marker of its own
413
- an optional 'shared-storage' flag
414
- an optional 'no-working-trees' flag
416
- Support for recording full info about the tree root
420
rich_root_data = True
421
repository_class = KnitRepository2
423
def get_format_string(self):
424
"""See RepositoryFormat.get_format_string()."""
425
return "Bazaar Knit Repository Format 2\n"
427
def get_format_description(self):
428
"""See RepositoryFormat.get_format_description()."""
429
return "Knit repository format 2"
431
def check_conversion_target(self, target_format):
432
if not target_format.rich_root_data:
433
raise errors.BadConversionTarget(
434
'Does not support rich root data.', target_format)
436
def open(self, a_bzrdir, _found=False, _override_transport=None):
437
"""See RepositoryFormat.open().
439
:param _override_transport: INTERNAL USE ONLY. Allows opening the
440
repository at a slightly different url
441
than normal. I.e. during 'upgrade'.
444
format = RepositoryFormat.find_format(a_bzrdir)
445
assert format.__class__ == self.__class__
446
if _override_transport is not None:
447
repo_transport = _override_transport
449
repo_transport = a_bzrdir.get_repository_transport(None)
450
control_files = lockable_files.LockableFiles(repo_transport, 'lock',
452
text_store = self._get_text_store(repo_transport, control_files)
453
control_store = self._get_control_store(repo_transport, control_files)
454
_revision_store = self._get_revision_store(repo_transport, control_files)
455
return self.repository_class(_format=self,
457
control_files=control_files,
458
_revision_store=_revision_store,
459
control_store=control_store,
460
text_store=text_store)
463
class RepositoryFormatKnit3(RepositoryFormatKnit2):
464
"""Bzr repository knit format 2.
466
THIS FORMAT IS EXPERIMENTAL
393
class RepositoryFormatKnit3(RepositoryFormatKnit):
394
"""Bzr repository knit format 2.
467
396
This repository format has:
468
397
- knits for file texts and inventory
469
398
- hash subdirectory based stores.
489
419
_matchingbzrdir = property(_get_matching_bzrdir, _ignore_setting_bzrdir)
491
421
def check_conversion_target(self, target_format):
492
RepositoryFormatKnit2.check_conversion_target(self, target_format)
422
if not target_format.rich_root_data:
423
raise errors.BadConversionTarget(
424
'Does not support rich root data.', target_format)
493
425
if not getattr(target_format, 'support_tree_reference', False):
494
426
raise errors.BadConversionTarget(
495
427
'Does not support nested trees', target_format)
498
429
def get_format_string(self):
499
430
"""See RepositoryFormat.get_format_string()."""
500
431
return "Bazaar Knit Repository Format 3\n"
503
434
"""See RepositoryFormat.get_format_description()."""
504
435
return "Knit repository format 3"
437
def open(self, a_bzrdir, _found=False, _override_transport=None):
438
"""See RepositoryFormat.open().
440
:param _override_transport: INTERNAL USE ONLY. Allows opening the
441
repository at a slightly different url
442
than normal. I.e. during 'upgrade'.
445
format = RepositoryFormat.find_format(a_bzrdir)
446
assert format.__class__ == self.__class__
447
if _override_transport is not None:
448
repo_transport = _override_transport
450
repo_transport = a_bzrdir.get_repository_transport(None)
451
control_files = lockable_files.LockableFiles(repo_transport, 'lock',
453
text_store = self._get_text_store(repo_transport, control_files)
454
control_store = self._get_control_store(repo_transport, control_files)
455
_revision_store = self._get_revision_store(repo_transport, control_files)
456
return self.repository_class(_format=self,
458
control_files=control_files,
459
_revision_store=_revision_store,
460
control_store=control_store,
461
text_store=text_store)