~jelmer/brz/byov-trunk

« back to all changes in this revision

Viewing changes to breezy/git/config.py

  • Committer: Breezy landing bot
  • Author(s): Jelmer Vernooij
  • Date: 2020-03-22 02:17:16 UTC
  • mfrom: (7498.1.1 merge-3.1)
  • Revision ID: breezy.the.bot@gmail.com-20200322021716-zt9rlebq0z6asuad
Merge lp:brz/3.1.

Merged from https://code.launchpad.net/~jelmer/brz/merge-3.1/+merge/381004

Show diffs side-by-side

added added

removed removed

Lines of Context:
44
44
        return self._get_best_value('_get_user_id')
45
45
 
46
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
 
47
85
class GitBranchStack(config._CompatibleStack):
48
86
    """GitBranch stack."""
49
87
 
50
88
    def __init__(self, branch):
 
89
        section_getters = [self._get_overrides]
51
90
        lstore = config.LocationStore()
52
91
        loc_matcher = config.LocationMatcher(lstore, branch.base)
 
92
        section_getters.append(loc_matcher.get_sections)
53
93
        # FIXME: This should also be looking in .git/config for
54
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)
55
99
        gstore = config.GlobalStore()
 
100
        section_getters.append(gstore.get_sections)
56
101
        super(GitBranchStack, self).__init__(
57
 
            [self._get_overrides,
58
 
             loc_matcher.get_sections,
59
 
             gstore.get_sections],
 
102
            section_getters,
60
103
            # All modifications go to the corresponding section in
61
104
            # locations.conf
62
105
            lstore, branch.base)