diff options
Diffstat (limited to 'git_config.py')
-rw-r--r-- | git_config.py | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/git_config.py b/git_config.py index 1d45d92f..9b63417e 100644 --- a/git_config.py +++ b/git_config.py | |||
@@ -29,6 +29,13 @@ REVIEW_CACHE = dict() | |||
29 | def IsId(rev): | 29 | def IsId(rev): |
30 | return ID_RE.match(rev) | 30 | return ID_RE.match(rev) |
31 | 31 | ||
32 | def _key(name): | ||
33 | parts = name.split('.') | ||
34 | if len(parts) < 2: | ||
35 | return name.lower() | ||
36 | parts[ 0] = parts[ 0].lower() | ||
37 | parts[-1] = parts[-1].lower() | ||
38 | return '.'.join(parts) | ||
32 | 39 | ||
33 | class GitConfig(object): | 40 | class GitConfig(object): |
34 | _ForUser = None | 41 | _ForUser = None |
@@ -54,8 +61,7 @@ class GitConfig(object): | |||
54 | def Has(self, name, include_defaults = True): | 61 | def Has(self, name, include_defaults = True): |
55 | """Return true if this configuration file has the key. | 62 | """Return true if this configuration file has the key. |
56 | """ | 63 | """ |
57 | name = name.lower() | 64 | if _key(name) in self._cache: |
58 | if name in self._cache: | ||
59 | return True | 65 | return True |
60 | if include_defaults and self.defaults: | 66 | if include_defaults and self.defaults: |
61 | return self.defaults.Has(name, include_defaults = True) | 67 | return self.defaults.Has(name, include_defaults = True) |
@@ -83,10 +89,8 @@ class GitConfig(object): | |||
83 | This configuration file is used first, if the key is not | 89 | This configuration file is used first, if the key is not |
84 | defined or all = True then the defaults are also searched. | 90 | defined or all = True then the defaults are also searched. |
85 | """ | 91 | """ |
86 | name = name.lower() | ||
87 | |||
88 | try: | 92 | try: |
89 | v = self._cache[name] | 93 | v = self._cache[_key(name)] |
90 | except KeyError: | 94 | except KeyError: |
91 | if self.defaults: | 95 | if self.defaults: |
92 | return self.defaults.GetString(name, all = all) | 96 | return self.defaults.GetString(name, all = all) |
@@ -110,16 +114,16 @@ class GitConfig(object): | |||
110 | The supplied value should be either a string, | 114 | The supplied value should be either a string, |
111 | or a list of strings (to store multiple values). | 115 | or a list of strings (to store multiple values). |
112 | """ | 116 | """ |
113 | name = name.lower() | 117 | key = _key(name) |
114 | 118 | ||
115 | try: | 119 | try: |
116 | old = self._cache[name] | 120 | old = self._cache[key] |
117 | except KeyError: | 121 | except KeyError: |
118 | old = [] | 122 | old = [] |
119 | 123 | ||
120 | if value is None: | 124 | if value is None: |
121 | if old: | 125 | if old: |
122 | del self._cache[name] | 126 | del self._cache[key] |
123 | self._do('--unset-all', name) | 127 | self._do('--unset-all', name) |
124 | 128 | ||
125 | elif isinstance(value, list): | 129 | elif isinstance(value, list): |
@@ -130,13 +134,13 @@ class GitConfig(object): | |||
130 | self.SetString(name, value[0]) | 134 | self.SetString(name, value[0]) |
131 | 135 | ||
132 | elif old != value: | 136 | elif old != value: |
133 | self._cache[name] = list(value) | 137 | self._cache[key] = list(value) |
134 | self._do('--replace-all', name, value[0]) | 138 | self._do('--replace-all', name, value[0]) |
135 | for i in xrange(1, len(value)): | 139 | for i in xrange(1, len(value)): |
136 | self._do('--add', name, value[i]) | 140 | self._do('--add', name, value[i]) |
137 | 141 | ||
138 | elif len(old) != 1 or old[0] != value: | 142 | elif len(old) != 1 or old[0] != value: |
139 | self._cache[name] = [value] | 143 | self._cache[key] = [value] |
140 | self._do('--replace-all', name, value) | 144 | self._do('--replace-all', name, value) |
141 | 145 | ||
142 | def GetRemote(self, name): | 146 | def GetRemote(self, name): |
@@ -172,7 +176,7 @@ class GitConfig(object): | |||
172 | lf = d.index('\n') | 176 | lf = d.index('\n') |
173 | nul = d.index('\0', lf + 1) | 177 | nul = d.index('\0', lf + 1) |
174 | 178 | ||
175 | key = d[0:lf] | 179 | key = _key(d[0:lf]) |
176 | val = d[lf + 1:nul] | 180 | val = d[lf + 1:nul] |
177 | 181 | ||
178 | if key in c: | 182 | if key in c: |