/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/git/config.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
"""Config file handling for Git."""
18
18
 
19
 
from __future__ import absolute_import
20
 
 
21
19
from .. import (
22
20
    config,
23
21
    )
46
44
        return self._get_best_value('_get_user_id')
47
45
 
48
46
 
 
47
class GitConfigSectionDefault(config.Section):
 
48
    """The "default" config section in git config file"""
 
49
 
 
50
    def __init__(self, config):
 
51
        self._config = config
 
52
 
 
53
    def get(self, name, default=None, expand=True):
 
54
        if name == 'email':
 
55
            try:
 
56
                email = self._config.get((b'user', ), b'email')
 
57
            except KeyError:
 
58
                return None
 
59
            try:
 
60
                name = self._config.get((b'user', ), b'name')
 
61
            except KeyError:
 
62
                return email.decode()
 
63
            return '%s <%s>' % (name.decode(), email.decode())
 
64
        if name == 'gpg_signing_key':
 
65
            try:
 
66
                key = self._config.get((b'user', ), b'signingkey')
 
67
            except KeyError:
 
68
                return None
 
69
            return key.decode()
 
70
        return None
 
71
 
 
72
 
 
73
class GitConfigStore(config.Store):
 
74
    """Store that uses gitconfig."""
 
75
 
 
76
    def __init__(self, config):
 
77
        self._config = config
 
78
 
 
79
    def get_sections(self):
 
80
        return [
 
81
            (self, GitConfigSectionDefault(self._config)),
 
82
            ]
 
83
 
 
84
 
49
85
class GitBranchStack(config._CompatibleStack):
50
86
    """GitBranch stack."""
51
87
 
52
88
    def __init__(self, branch):
 
89
        section_getters = [self._get_overrides]
53
90
        lstore = config.LocationStore()
54
91
        loc_matcher = config.LocationMatcher(lstore, branch.base)
 
92
        section_getters.append(loc_matcher.get_sections)
55
93
        # FIXME: This should also be looking in .git/config for
56
94
        # local git branches.
 
95
        git = getattr(branch.repository, '_git', None)
 
96
        if git:
 
97
            cstore = GitConfigStore(git.get_config())
 
98
            section_getters.append(cstore.get_sections)
57
99
        gstore = config.GlobalStore()
 
100
        section_getters.append(gstore.get_sections)
58
101
        super(GitBranchStack, self).__init__(
59
 
            [self._get_overrides,
60
 
             loc_matcher.get_sections,
61
 
             gstore.get_sections],
 
102
            section_getters,
62
103
            # All modifications go to the corresponding section in
63
104
            # locations.conf
64
105
            lstore, branch.base)