~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/bzrdir.py

Split out repository into .bzr/repository

Show diffs side-by-side

added added

removed removed

Lines of Context:
146
146
        """
147
147
        raise NotImplementedError(self.get_branch_transport)
148
148
        
 
149
    def get_repository_transport(self, repository_format):
 
150
        """Get the transport for use by repository format in this BzrDir.
 
151
 
 
152
        Note that bzr dirs that do not support format strings will raise
 
153
        IncompatibleFormat if the repository format they are given has
 
154
        a format string, and vice verca.
 
155
 
 
156
        If repository_format is None, the transport is returned with no 
 
157
        checking. if it is not None, then the returned transport is
 
158
        guaranteed to point to an existing directory ready for use.
 
159
        """
 
160
        raise NotImplementedError(self.get_repository_transport)
 
161
        
149
162
    def get_workingtree_transport(self, branch_format):
150
163
        """Get the transport for use by workingtree format in this BzrDir.
151
164
 
231
244
                raise errors.NotBranchError(path=url)
232
245
            t = new_t
233
246
 
234
 
    def open_repository(self):
 
247
    def open_repository(self, _unsupported=False):
235
248
        """Open the repository object at this BzrDir if one is present.
236
 
        
 
249
 
 
250
        This will not follow the Branch object pointer - its strictly a direct
 
251
        open facility. Most client code should use open_branch().repository to
 
252
        get at a repository.
 
253
 
 
254
        _unsupported is a private parameter, not part of the api.
237
255
        TODO: static convenience version of this?
238
 
        TODO: NoRepositoryError that can be raised.
239
256
        """
240
257
        raise NotImplementedError(self.open_repository)
241
258
 
265
282
            return self.transport
266
283
        raise errors.IncompatibleFormat(branch_format, self._format)
267
284
 
 
285
    def get_repository_transport(self, repository_format):
 
286
        """See BzrDir.get_repository_transport()."""
 
287
        if repository_format is None:
 
288
            return self.transport
 
289
        try:
 
290
            repository_format.get_format_string()
 
291
        except NotImplementedError:
 
292
            return self.transport
 
293
        raise errors.IncompatibleFormat(repository_format, self._format)
 
294
 
268
295
    def get_workingtree_transport(self, workingtree_format):
269
296
        """See BzrDir.get_workingtree_transport()."""
270
297
        if workingtree_format is None:
359
386
 
360
387
    def create_repository(self):
361
388
        """See BzrDir.create_repository."""
362
 
        from bzrlib.repository import RepositoryFormat6
363
 
        return RepositoryFormat6().initialize(self)
 
389
        from bzrlib.repository import RepositoryFormat
 
390
        return RepositoryFormat.get_default_format().initialize(self)
364
391
 
365
392
    def create_workingtree(self):
366
393
        """See BzrDir.create_workingtree."""
381
408
            pass
382
409
        return self.transport.clone('branch')
383
410
 
 
411
    def get_repository_transport(self, repository_format):
 
412
        """See BzrDir.get_repository_transport()."""
 
413
        if repository_format is None:
 
414
            return self.transport.clone('repository')
 
415
        try:
 
416
            repository_format.get_format_string()
 
417
        except NotImplementedError:
 
418
            raise errors.IncompatibleFormat(repository_format, self._format)
 
419
        try:
 
420
            self.transport.mkdir('repository')
 
421
        except errors.FileExists:
 
422
            pass
 
423
        return self.transport.clone('repository')
 
424
 
384
425
    def get_workingtree_transport(self, workingtree_format):
385
426
        """See BzrDir.get_workingtree_transport()."""
386
427
        if workingtree_format is None:
402
443
        self._check_supported(format, unsupported)
403
444
        return format.open(self, _found=True)
404
445
 
405
 
    def open_repository(self):
 
446
    def open_repository(self, unsupported=False):
406
447
        """See BzrDir.open_repository."""
407
 
        from bzrlib.repository import RepositoryFormat6
408
 
        return RepositoryFormat6().open(self, _found=True)
 
448
        from bzrlib.repository import RepositoryFormat
 
449
        format = RepositoryFormat.find_format(self)
 
450
        self._check_supported(format, unsupported)
 
451
        return format.open(self, _found=True)
409
452
 
410
453
    def open_workingtree(self, unsupported=False):
411
454
        """See BzrDir.create_workingtree."""