/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/inter.py

  • Committer: Gustav Hartvigsson
  • Date: 2021-01-09 21:36:27 UTC
  • Revision ID: gustav.hartvigsson@gmail.com-20210109213627-h1xwcutzy9m7a99b
Added 'Case Preserving Working Tree Use Cases' from Canonical Wiki

* Addod a page from the Canonical Bazaar wiki
  with information on the scmeatics of case
  perserving filesystems an a case insensitive
  filesystem works.
  
  * Needs re-work, but this will do as it is the
    same inforamoton as what was on the linked
    page in the currint documentation.

Show diffs side-by-side

added added

removed removed

Lines of Context:
16
16
 
17
17
"""Inter-object utility class."""
18
18
 
19
 
from __future__ import absolute_import
20
 
 
21
19
from .errors import BzrError
22
20
from .lock import LogicalLockResult
 
21
from .pyutils import get_named_object
23
22
 
24
23
 
25
24
class NoCompatibleInter(BzrError):
92
91
        If an optimised worker exists it will be used otherwise
93
92
        a default Inter worker instance will be created.
94
93
        """
95
 
        for provider in reversed(klass._optimisers):
 
94
        for i, provider in enumerate(reversed(klass._optimisers)):
 
95
            if isinstance(provider, tuple):
 
96
                provider = get_named_object(provider[0], provider[1])
 
97
                klass._optimisers[-i] = provider
96
98
            if provider.is_compatible(source, target):
97
99
                return provider(source, target)
98
100
        raise NoCompatibleInter(source, target)
99
101
 
 
102
    @classmethod
 
103
    def iter_optimisers(klass):
 
104
        for provider in klass._optimisers:
 
105
            if isinstance(provider, tuple):
 
106
                yield get_named_object(provider[0], provider[1])
 
107
            else:
 
108
                yield provider
 
109
 
100
110
    def lock_read(self):
101
111
        """Take out a logical read lock.
102
112
 
120
130
        """Register an InterObject optimiser."""
121
131
        klass._optimisers.append(optimiser)
122
132
 
 
133
    @classmethod
 
134
    def register_lazy_optimiser(klass, module_name, member_name):
 
135
        # TODO(jelmer): Allow passing in a custom .is_compatible
 
136
        klass._optimisers.append((module_name, member_name))
 
137
 
123
138
    def unlock(self):
124
139
        """Release the locks on source and target."""
125
140
        try: