def __init__(self, _transport, _format):
     self._format = _format
     self.transport = _transport.clone('.dummy')
     self.root_transport = _transport
     self._mode_check_done = False
     self._control_files = lockable_files.LockableFiles(
         self.transport, "lock", lockable_files.TransportLock)
Exemple #2
0
    def initialize(self, a_bzrdir, shared=False, _internal=False):
        """Create a weave repository."""
        if shared:
            raise errors.IncompatibleFormat(self, a_bzrdir._format)

        if not _internal:
            # always initialized when the bzrdir is.
            return self.open(a_bzrdir, _found=True)

        # Create an empty weave
        sio = StringIO()
        weavefile.write_weave_v5(weave.Weave(), sio)
        empty_weave = sio.getvalue()

        mutter('creating repository in %s.', a_bzrdir.transport.base)

        # FIXME: RBC 20060125 don't peek under the covers
        # NB: no need to escape relative paths that are url safe.
        control_files = lockable_files.LockableFiles(
            a_bzrdir.transport, 'branch-lock', lockable_files.TransportLock)
        control_files.create_lock()
        control_files.lock_write()
        transport = a_bzrdir.transport
        try:
            transport.mkdir_multi(['revision-store', 'weaves'],
                                  mode=a_bzrdir._get_dir_mode())
            transport.put_bytes_non_atomic('inventory.weave', empty_weave)
        finally:
            control_files.unlock()
        return self.open(a_bzrdir, _found=True)
Exemple #3
0
 def open(self, a_bzrdir, _found=False, _override_transport=None):
     """See RepositoryFormat.open().
     
     :param _override_transport: INTERNAL USE ONLY. Allows opening the
                                 repository at a slightly different url
                                 than normal. I.e. during 'upgrade'.
     """
     if not _found:
         format = RepositoryFormat.find_format(a_bzrdir)
     if _override_transport is not None:
         repo_transport = _override_transport
     else:
         repo_transport = a_bzrdir.get_repository_transport(None)
     control_files = lockable_files.LockableFiles(repo_transport, 'lock',
                                                  lockdir.LockDir)
     repo = self.repository_class(
         _format=self,
         a_bzrdir=a_bzrdir,
         control_files=control_files,
         _commit_builder_class=self._commit_builder_class,
         _serializer=self._serializer)
     repo.revisions = self._get_revisions(repo_transport, repo)
     repo.signatures = self._get_signatures(repo_transport, repo)
     repo.inventories = self._get_inventories(repo_transport, repo)
     repo.texts = self._get_texts(repo_transport, repo)
     repo._transport = repo_transport
     return repo
Exemple #4
0
    def initialize(self, a_bzrdir, shared=False):
        """Create a knit format 1 repository.

        :param a_bzrdir: bzrdir to contain the new repository; must already
            be initialized.
        :param shared: If true the repository will be initialized as a shared
                       repository.
        """
        mutter('creating repository in %s.', a_bzrdir.transport.base)
        dirs = ['knits']
        files = []
        utf8_files = [('format', self.get_format_string())]

        self._upload_blank_content(a_bzrdir, dirs, files, utf8_files, shared)
        repo_transport = a_bzrdir.get_repository_transport(None)
        control_files = lockable_files.LockableFiles(repo_transport, 'lock',
                                                     lockdir.LockDir)
        transaction = transactions.WriteTransaction()
        result = self.open(a_bzrdir=a_bzrdir, _found=True)
        result.lock_write()
        # the revision id here is irrelevant: it will not be stored, and cannot
        # already exist, we do this to create files on disk for older clients.
        result.inventories.get_parent_map([('A', )])
        result.revisions.get_parent_map([('A', )])
        result.signatures.get_parent_map([('A', )])
        result.unlock()
        return result
Exemple #5
0
    def open(self, a_bzrdir, _found=False, _override_transport=None):
        """See RepositoryFormat.open().

        :param _override_transport: INTERNAL USE ONLY. Allows opening the
                                    repository at a slightly different url
                                    than normal. I.e. during 'upgrade'.
        """
        if not _found:
            format = RepositoryFormatMetaDir.find_format(a_bzrdir)
        if _override_transport is not None:
            repo_transport = _override_transport
        else:
            repo_transport = a_bzrdir.get_repository_transport(None)
        control_files = lockable_files.LockableFiles(repo_transport, 'lock',
                                                     lockdir.LockDir)
        result = WeaveMetaDirRepository(_format=self,
                                        a_bzrdir=a_bzrdir,
                                        control_files=control_files)
        result.revisions = self._get_revisions(repo_transport, result)
        result.signatures = self._get_signatures(repo_transport, result)
        result.inventories = self._get_inventories(repo_transport, result)
        result.texts = self._get_texts(repo_transport, result)
        result.chk_bytes = None
        result._transport = repo_transport
        return result
 def initialize_on_transport(self, transport):
     """Initialize a new bzrdir in the base directory of a Transport."""
     # Since we don't have a .bzr directory, inherit the
     # mode from the root directory
     temp_control = lockable_files.LockableFiles(
         transport, '', lockable_files.TransportLock)
     temp_control._transport.mkdir(
         '.dummy',
         # FIXME: RBC 20060121 don't peek under
         # the covers
         mode=temp_control._dir_mode)
     del temp_control
     bzrdir_transport = transport.clone('.dummy')
     # NB: no need to escape relative paths that are url safe.
     control_files = lockable_files.LockableFiles(bzrdir_transport,
                                                  self._lock_file_name,
                                                  self._lock_class)
     control_files.create_lock()
     return self.open(transport, _found=True)
Exemple #7
0
    def __init__(self, bzrdir, repo, branch):
        self.basedir = bzrdir.transport.base
        self.bzrdir = bzrdir
        self.repository = repo
        self._branch = branch
        self._transport = bzrdir.transport

        self.controldir = urlutils.join(self.repository._git.path, 'bzr')

        try:
            os.makedirs(self.controldir)
            os.makedirs(os.path.join(self.controldir, 'lock'))
        except OSError:
            pass

        self._control_files = lockable_files.LockableFiles(
            transport.get_transport(self.controldir), 'lock', lockdir.LockDir)

        self._format = GitWorkingTreeFormat()

        self.index = Index(
            os.path.join(self.repository._git.controldir(), "index"))
 def open(self,
          a_bzrdir,
          name=None,
          _found=False,
          ignore_fallbacks=False,
          found_repository=None):
     if name is None:
         name = a_bzrdir._get_selected_branch()
     if not _found:
         raise NotImplementedError
     try:
         transport = a_bzrdir.get_branch_transport(None, name=name)
         control_files = lockable_files.LockableFiles(
             transport, 'lock', lockdir.LockDir)
         if found_repository is None:
             found_repository = a_bzrdir.find_repository()
         return DummyForeignVcsBranch(_format=self,
                                      _control_files=control_files,
                                      a_bzrdir=a_bzrdir,
                                      _repository=found_repository,
                                      name=name)
     except errors.NoSuchFile:
         raise errors.NotBranchError(path=transport.base)