/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: Jelmer Vernooij
  • Date: 2020-03-22 19:12:43 UTC
  • mfrom: (7490.7.6 work)
  • mto: (7490.7.7 work)
  • mto: This revision was merged to the branch mainline in revision 7501.
  • Revision ID: jelmer@jelmer.uk-20200322191243-yx8ils8lvfmfh7rq
Merge lp:brz/3.1.

Show diffs side-by-side

added added

removed removed

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