diff options
| -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: |
