~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/bzrdir.py

Merge bzr.dev

Show diffs side-by-side

added added

removed removed

Lines of Context:
22
22
 
23
23
# TODO: remove unittest dependency; put that stuff inside the test suite
24
24
 
 
25
# TODO: The Format probe_transport seems a bit redundant with just trying to
 
26
# open the bzrdir. -- mbp
 
27
#
 
28
# TODO: Can we move specific formats into separate modules to make this file
 
29
# smaller?
 
30
 
25
31
from copy import deepcopy
26
32
from cStringIO import StringIO
27
33
import os
298
304
        This will use the current default BzrDirFormat, and use whatever 
299
305
        repository format that that uses for bzrdirformat.create_repository.
300
306
 
301
 
        ;param shared: Create a shared repository rather than a standalone
 
307
        :param shared: Create a shared repository rather than a standalone
302
308
                       repository.
303
309
        The Repository object is returned.
304
310
 
319
325
        repository format that that uses for bzrdirformat.create_workingtree,
320
326
        create_branch and create_repository.
321
327
 
322
 
        The WorkingTree object is returned.
 
328
        :return: The WorkingTree object.
323
329
        """
324
330
        t = get_transport(safe_unicode(base))
325
331
        if not isinstance(t, LocalTransport):
466
472
        _unsupported is a private parameter to the BzrDir class.
467
473
        """
468
474
        t = get_transport(base)
469
 
        # mutter("trying to open %r with transport %r", base, t)
470
 
        format = BzrDirFormat.find_format(t)
 
475
        return BzrDir.open_from_transport(t, _unsupported=_unsupported)
 
476
 
 
477
    @staticmethod
 
478
    def open_from_transport(transport, _unsupported=False):
 
479
        """Open a bzrdir within a particular directory.
 
480
 
 
481
        :param transport: Transport containing the bzrdir.
 
482
        :param _unsupported: private.
 
483
        """
 
484
        format = BzrDirFormat.find_format(transport)
471
485
        BzrDir._check_supported(format, _unsupported)
472
 
        return format.open(t, _found=True)
 
486
        return format.open(transport, _found=True)
473
487
 
474
488
    def open_branch(self, unsupported=False):
475
489
        """Open the branch object at this BzrDir if one is present.
509
523
        url = a_transport.base
510
524
        while True:
511
525
            try:
512
 
                format = BzrDirFormat.find_format(a_transport)
513
 
                BzrDir._check_supported(format, False)
514
 
                return format.open(a_transport), urlutils.unescape(a_transport.relpath(url))
 
526
                result = BzrDir.open_from_transport(a_transport)
 
527
                return result, urlutils.unescape(a_transport.relpath(url))
515
528
            except errors.NotBranchError, e:
516
 
                ## mutter('not a branch in: %r %s', a_transport.base, e)
517
529
                pass
518
530
            new_t = a_transport.clone('..')
519
531
            if new_t.base == a_transport.base: