~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/controldir.py

  • Committer: Vincent Ladeuil
  • Date: 2012-01-05 15:54:17 UTC
  • mfrom: (6428 +trunk)
  • mto: This revision was merged to the branch mainline in revision 6468.
  • Revision ID: v.ladeuil+lp@free.fr-20120105155417-zvjqr0v78zp332e0
Merge trunk resolving conflicts and fixing more test failures related to
more option being migrated which in turn reduce some hpss_calls.

Show diffs side-by-side

added added

removed removed

Lines of Context:
262
262
        """
263
263
        raise NotImplementedError(self.find_repository)
264
264
 
265
 
    def open_workingtree(self, _unsupported=False,
 
265
    def open_workingtree(self, unsupported=False,
266
266
                         recommend_upgrade=True, from_branch=None):
267
267
        """Open the workingtree object at this ControlDir if one is present.
268
268
 
672
672
        return klass.open(base, _unsupported=True)
673
673
 
674
674
    @classmethod
675
 
    def open(klass, base, _unsupported=False, possible_transports=None):
 
675
    def open(klass, base, possible_transports=None, probers=None,
 
676
             _unsupported=False):
676
677
        """Open an existing controldir, rooted at 'base' (url).
677
678
 
678
679
        :param _unsupported: a private parameter to the ControlDir class.
679
680
        """
680
681
        t = _mod_transport.get_transport(base, possible_transports)
681
 
        return klass.open_from_transport(t, _unsupported=_unsupported)
 
682
        return klass.open_from_transport(t, probers=probers,
 
683
                _unsupported=_unsupported)
682
684
 
683
685
    @classmethod
684
686
    def open_from_transport(klass, transport, _unsupported=False,
685
 
                            _server_formats=True):
 
687
                            probers=None):
686
688
        """Open a controldir within a particular directory.
687
689
 
688
690
        :param transport: Transport containing the controldir.
694
696
        # the redirections.
695
697
        base = transport.base
696
698
        def find_format(transport):
697
 
            return transport, ControlDirFormat.find_format(
698
 
                transport, _server_formats=_server_formats)
 
699
            return transport, ControlDirFormat.find_format(transport,
 
700
                probers=probers)
699
701
 
700
702
        def redirected(transport, e, redirection_notice):
701
703
            redirected_transport = transport._redirected_to(e.source, e.target)
1118
1120
        return self.get_format_description().rstrip()
1119
1121
 
1120
1122
    @classmethod
 
1123
    def all_probers(klass):
 
1124
        return klass._server_probers + klass._probers
 
1125
 
 
1126
    @classmethod
1121
1127
    def known_formats(klass):
1122
1128
        """Return all the known formats.
1123
1129
        """
1124
1130
        result = set()
1125
 
        for prober_kls in klass._probers + klass._server_probers:
 
1131
        for prober_kls in klass.all_probers():
1126
1132
            result.update(prober_kls.known_formats())
1127
1133
        return result
1128
1134
 
1129
1135
    @classmethod
1130
 
    def find_format(klass, transport, _server_formats=True):
 
1136
    def find_format(klass, transport, probers=None):
1131
1137
        """Return the format present at transport."""
1132
 
        if _server_formats:
1133
 
            _probers = klass._server_probers + klass._probers
1134
 
        else:
1135
 
            _probers = klass._probers
1136
 
        for prober_kls in _probers:
 
1138
        if probers is None:
 
1139
            probers = klass.all_probers()
 
1140
        for prober_kls in probers:
1137
1141
            prober = prober_kls()
1138
1142
            try:
1139
1143
                return prober.probe_transport(transport)