~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repofmt/knitrepo.py

Merge from by-reference-trees

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
17
from bzrlib import (
 
18
    bzrdir,
18
19
    errors,
19
20
    graph,
20
21
    knit,
24
25
    transactions,
25
26
    xml5,
26
27
    xml6,
 
28
    xml7,
27
29
    )
28
30
 
29
31
from bzrlib.decorators import needs_read_lock, needs_write_lock
250
252
                                 committer, revprops, revision_id)
251
253
 
252
254
 
 
255
class KnitRepository3(KnitRepository2):
 
256
 
 
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
 
262
 
 
263
 
253
264
class RepositoryFormatKnit(MetaDirRepositoryFormat):
254
265
    """Bzr repository knit format (generalized). 
255
266
 
374
385
    This format was introduced in bzr 0.8.
375
386
    """
376
387
 
 
388
    def __ne__(self, other):
 
389
        return self.__class__ is not other.__class__
 
390
 
377
391
    def get_format_string(self):
378
392
        """See RepositoryFormat.get_format_string()."""
379
393
        return "Bazaar-NG Knit Repository Format 1"
404
418
    """
405
419
    
406
420
    rich_root_data = True
 
421
    repository_class = KnitRepository2
407
422
 
408
423
    def get_format_string(self):
409
424
        """See RepositoryFormat.get_format_string()."""
437
452
        text_store = self._get_text_store(repo_transport, control_files)
438
453
        control_store = self._get_control_store(repo_transport, control_files)
439
454
        _revision_store = self._get_revision_store(repo_transport, control_files)
440
 
        return KnitRepository2(_format=self,
441
 
                               a_bzrdir=a_bzrdir,
442
 
                               control_files=control_files,
443
 
                               _revision_store=_revision_store,
444
 
                               control_store=control_store,
445
 
                               text_store=text_store)
 
455
        return self.repository_class(_format=self,
 
456
                                     a_bzrdir=a_bzrdir,
 
457
                                     control_files=control_files,
 
458
                                     _revision_store=_revision_store,
 
459
                                     control_store=control_store,
 
460
                                     text_store=text_store)
 
461
 
 
462
 
 
463
class RepositoryFormatKnit3(RepositoryFormatKnit2):
 
464
    """Bzr repository knit format 2.
 
465
 
 
466
    THIS FORMAT IS EXPERIMENTAL
 
467
    This repository format has:
 
468
     - knits for file texts and inventory
 
469
     - hash subdirectory based stores.
 
470
     - knits for revisions and signatures
 
471
     - TextStores for revisions and signatures.
 
472
     - a format marker of its own
 
473
     - an optional 'shared-storage' flag
 
474
     - an optional 'no-working-trees' flag
 
475
     - a LockDir lock
 
476
     - support for recording full info about the tree root
 
477
     - support for recording tree-references
 
478
    """
 
479
 
 
480
    repository_class = KnitRepository3
 
481
    support_tree_reference = True
 
482
 
 
483
    def _get_matching_bzrdir(self):
 
484
        return bzrdir.format_registry.make_bzrdir('experimental-knit3')
 
485
 
 
486
    def _ignore_setting_bzrdir(self, format):
 
487
        pass
 
488
 
 
489
    _matchingbzrdir = property(_get_matching_bzrdir, _ignore_setting_bzrdir)
 
490
 
 
491
    def check_conversion_target(self, target_format):
 
492
        RepositoryFormatKnit2.check_conversion_target(self, target_format)
 
493
        if not getattr(target_format, 'support_tree_reference', False):
 
494
            raise errors.BadConversionTarget(
 
495
                'Does not support nested trees', target_format)
 
496
            
 
497
 
 
498
    def get_format_string(self):
 
499
        """See RepositoryFormat.get_format_string()."""
 
500
        return "Bazaar Knit Repository Format 3\n"
 
501
 
 
502
    def get_format_description(self):
 
503
        """See RepositoryFormat.get_format_description()."""
 
504
        return "Knit repository format 3"
 
505
 
 
506