~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/repository.py

  • Committer: Shannon Weyrick
  • Date: 2011-11-04 13:40:04 UTC
  • mfrom: (6238 +trunk)
  • mto: This revision was merged to the branch mainline in revision 6256.
  • Revision ID: weyrick@mozek.us-20111104134004-033t2wqhc3ydzm0a
Merge

Show diffs side-by-side

added added

removed removed

Lines of Context:
342
342
        self.control_files.break_lock()
343
343
 
344
344
    @staticmethod
345
 
    def create(a_bzrdir):
346
 
        """Construct the current default format repository in a_bzrdir."""
347
 
        return RepositoryFormat.get_default_format().initialize(a_bzrdir)
 
345
    def create(controldir):
 
346
        """Construct the current default format repository in controldir."""
 
347
        return RepositoryFormat.get_default_format().initialize(controldir)
348
348
 
349
 
    def __init__(self, _format, a_bzrdir, control_files):
 
349
    def __init__(self, _format, controldir, control_files):
350
350
        """instantiate a Repository.
351
351
 
352
352
        :param _format: The format of the repository on disk.
353
 
        :param a_bzrdir: The BzrDir of the repository.
 
353
        :param controldir: The ControlDir of the repository.
354
354
        :param control_files: Control files to use for locking, etc.
355
355
        """
356
356
        # In the future we will have a single api for all stores for
359
359
        super(Repository, self).__init__()
360
360
        self._format = _format
361
361
        # the following are part of the public API for Repository:
362
 
        self.bzrdir = a_bzrdir
 
362
        self.bzrdir = controldir
363
363
        self.control_files = control_files
364
364
        # for tests
365
365
        self._write_group = None
547
547
            def __init__(self):
548
548
                self.first_call = True
549
549
 
550
 
            def __call__(self, bzrdir):
551
 
                # On the first call, the parameter is always the bzrdir
 
550
            def __call__(self, controldir):
 
551
                # On the first call, the parameter is always the controldir
552
552
                # containing the current repo.
553
553
                if not self.first_call:
554
554
                    try:
555
 
                        repository = bzrdir.open_repository()
 
555
                        repository = controldir.open_repository()
556
556
                    except errors.NoRepositoryPresent:
557
557
                        pass
558
558
                    else:
559
559
                        return False, ([], repository)
560
560
                self.first_call = False
561
 
                value = (bzrdir.list_branches(), None)
 
561
                value = (controldir.list_branches(), None)
562
562
                return True, value
563
563
 
564
564
        ret = []
565
 
        for branches, repository in bzrdir.BzrDir.find_bzrdirs(
 
565
        for branches, repository in controldir.ControlDir.find_bzrdirs(
566
566
                self.user_transport, evaluate=Evaluator()):
567
567
            if branches is not None:
568
568
                ret.extend(branches)
602
602
        For instance, if the repository is at URL/.bzr/repository,
603
603
        Repository.open(URL) -> a Repository instance.
604
604
        """
605
 
        control = bzrdir.BzrDir.open(base)
 
605
        control = controldir.ControlDir.open(base)
606
606
        return control.open_repository()
607
607
 
608
608
    def copy_content_into(self, destination, revision_id=None):
746
746
                repo.unlock()
747
747
 
748
748
    @needs_read_lock
749
 
    def clone(self, a_bzrdir, revision_id=None):
750
 
        """Clone this repository into a_bzrdir using the current format.
 
749
    def clone(self, controldir, revision_id=None):
 
750
        """Clone this repository into controldir using the current format.
751
751
 
752
752
        Currently no check is made that the format of this repository and
753
753
        the bzrdir format are compatible. FIXME RBC 20060201.
756
756
        """
757
757
        # TODO: deprecate after 0.16; cloning this with all its settings is
758
758
        # probably not very useful -- mbp 20070423
759
 
        dest_repo = self._create_sprouting_repo(a_bzrdir, shared=self.is_shared())
 
759
        dest_repo = self._create_sprouting_repo(
 
760
            controldir, shared=self.is_shared())
760
761
        self.copy_content_into(dest_repo, revision_id)
761
762
        return dest_repo
762
763
 
929
930
        parent_ids.discard(_mod_revision.NULL_REVISION)
930
931
        return parent_ids
931
932
 
932
 
    def fileids_altered_by_revision_ids(self, revision_ids):
933
 
        """Find the file ids and versions affected by revisions.
934
 
 
935
 
        :param revisions: an iterable containing revision ids.
936
 
        :return: a dictionary mapping altered file-ids to an iterable of
937
 
            revision_ids. Each altered file-ids has the exact revision_ids
938
 
            that altered it listed explicitly.
939
 
        """
940
 
        raise NotImplementedError(self.fileids_altered_by_revision_ids)
941
 
 
942
933
    def iter_files_bytes(self, desired_files):
943
934
        """Iterate through file versions.
944
935
 
1321
1312
 
1322
1313
    def get_default(self):
1323
1314
        """Return the current default format."""
1324
 
        from bzrlib import bzrdir
1325
 
        return bzrdir.format_registry.make_bzrdir('default').repository_format
 
1315
        return controldir.format_registry.make_bzrdir('default').repository_format
1326
1316
 
1327
1317
 
1328
1318
network_format_registry = registry.FormatRegistry()
1371
1361
    created.
1372
1362
 
1373
1363
    Common instance attributes:
1374
 
    _matchingbzrdir - the bzrdir format that the repository format was
 
1364
    _matchingbzrdir - the controldir format that the repository format was
1375
1365
    originally written to work with. This can be used if manually
1376
1366
    constructing a bzrdir and repository, or more commonly for test suite
1377
1367
    parameterization.
1419
1409
    supports_versioned_directories = None
1420
1410
    # Can other repositories be nested into one of this format?
1421
1411
    supports_nesting_repositories = None
 
1412
    # Is it possible for revisions to be present without being referenced
 
1413
    # somewhere ?
 
1414
    supports_unreferenced_revisions = None
1422
1415
 
1423
1416
    def __repr__(self):
1424
1417
        return "%s()" % self.__class__.__name__
1476
1469
        """Return the short description for this format."""
1477
1470
        raise NotImplementedError(self.get_format_description)
1478
1471
 
1479
 
    def initialize(self, a_bzrdir, shared=False):
1480
 
        """Initialize a repository of this format in a_bzrdir.
 
1472
    def initialize(self, controldir, shared=False):
 
1473
        """Initialize a repository of this format in controldir.
1481
1474
 
1482
 
        :param a_bzrdir: The bzrdir to put the new repository in it.
 
1475
        :param controldir: The controldir to put the new repository in it.
1483
1476
        :param shared: The repository should be initialized as a sharable one.
1484
1477
        :returns: The new repository object.
1485
1478
 
1486
1479
        This may raise UninitializableFormat if shared repository are not
1487
 
        compatible the a_bzrdir.
 
1480
        compatible the controldir.
1488
1481
        """
1489
1482
        raise NotImplementedError(self.initialize)
1490
1483
 
1526
1519
                'Does not support nested trees', target_format,
1527
1520
                from_format=self)
1528
1521
 
1529
 
    def open(self, a_bzrdir, _found=False):
1530
 
        """Return an instance of this format for the bzrdir a_bzrdir.
 
1522
    def open(self, controldir, _found=False):
 
1523
        """Return an instance of this format for a controldir.
1531
1524
 
1532
1525
        _found is a private parameter, do not use it.
1533
1526
        """
1534
1527
        raise NotImplementedError(self.open)
1535
1528
 
1536
 
    def _run_post_repo_init_hooks(self, repository, a_bzrdir, shared):
1537
 
        from bzrlib.bzrdir import BzrDir, RepoInitHookParams
1538
 
        hooks = BzrDir.hooks['post_repo_init']
 
1529
    def _run_post_repo_init_hooks(self, repository, controldir, shared):
 
1530
        from bzrlib.controldir import ControlDir, RepoInitHookParams
 
1531
        hooks = ControlDir.hooks['post_repo_init']
1539
1532
        if not hooks:
1540
1533
            return
1541
 
        params = RepoInitHookParams(repository, self, a_bzrdir, shared)
 
1534
        params = RepoInitHookParams(repository, self, controldir, shared)
1542
1535
        for hook in hooks:
1543
1536
            hook(params)
1544
1537
 
1597
1590
# formats which have no format string are not discoverable or independently
1598
1591
# creatable on disk, so are not registered in format_registry.  They're
1599
1592
# all in bzrlib.repofmt.knitreponow.  When an instance of one of these is
1600
 
# needed, it's constructed directly by the BzrDir.  Non-native formats where
 
1593
# needed, it's constructed directly by the ControlDir.  Non-native formats where
1601
1594
# the repository is not separately opened are similar.
1602
1595
 
1603
1596
format_registry.register_lazy(