/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/library_state.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
"""The core state needed to make use of bzr is managed here."""
18
18
 
19
 
from __future__ import absolute_import
20
 
 
21
19
__all__ = [
22
20
    'BzrLibraryState',
23
21
    ]
24
22
 
25
23
 
 
24
import contextlib
 
25
 
 
26
 
26
27
import breezy
27
28
from .lazy_import import lazy_import
28
29
lazy_import(globals(), """
29
30
from breezy import (
30
 
    cleanup,
31
31
    config,
32
32
    osutils,
33
33
    symbol_versioning,
44
44
    currently always exposed as breezy._global_state, but we desired to move
45
45
    to a point where no global state is needed at all.
46
46
 
47
 
    :ivar cleanups: An ObjectWithCleanups which can be used for cleanups that
 
47
    :ivar exit_stack: An ExitStack which can be used for cleanups that
48
48
        should occur when the use of breezy is completed. This is initialised
49
49
        in __enter__ and executed in __exit__.
50
50
    """
89
89
        # isolation within the same interpreter.  It's not reached on normal
90
90
        # in-process run_bzr calls.  If it's broken, we expect that
91
91
        # TestRunBzrSubprocess may fail.
92
 
        self.cleanups = cleanup.ObjectWithCleanups()
 
92
        self.exit_stack = contextlib.ExitStack()
93
93
 
94
94
        if breezy.version_info[3] == 'final':
95
 
            self.cleanups.add_cleanup(
 
95
            self.exit_stack.callback(
96
96
                symbol_versioning.suppress_deprecation_warnings(override=True))
97
97
 
98
98
        self._trace.__enter__()
99
99
 
100
100
        self._orig_ui = breezy.ui.ui_factory
101
 
        breezy.ui.ui_factory = self._ui
102
 
        self._ui.__enter__()
 
101
        if self._ui is not None:
 
102
            breezy.ui.ui_factory = self._ui
 
103
            self._ui.__enter__()
103
104
 
104
105
        if breezy._global_state is not None:
105
106
            raise RuntimeError("Breezy already initialized")
111
112
            # Save config changes
112
113
            for k, store in self.config_stores.items():
113
114
                store.save_changes()
114
 
        self.cleanups.cleanup_now()
 
115
        self.exit_stack.close()
115
116
        trace._flush_stdout_stderr()
116
117
        trace._flush_trace()
117
118
        osutils.report_extension_load_failures()
118
 
        self._ui.__exit__(None, None, None)
 
119
        if self._ui is not None:
 
120
            self._ui.__exit__(None, None, None)
119
121
        self._trace.__exit__(None, None, None)
120
122
        ui.ui_factory = self._orig_ui
121
123
        breezy._global_state = None