'stgit.shortnr': '5'
}
- __cache={}
+ __cache = None
+
+ def load(self):
+ """Load the whole configuration in __cache unless it has been
+ done already."""
+ if self.__cache is not None:
+ return
+ self.__cache = {}
+ lines = Run('git', 'config', '--list', '--null').raw_output()
+ for line in filter(None, lines.split('\0')):
+ key, value = line.split('\n', 1)
+ self.__cache.setdefault(key, []).append(value)
def get(self, name):
- if self.__cache.has_key(name):
- return self.__cache[name]
- try:
- value = Run('git', 'config', '--get', name).output_one_line()
- except RunException:
- value = self.__defaults.get(name, None)
- self.__cache[name] = value
- return value
+ self.load()
+ if name not in self.__cache:
+ self.__cache[name] = [self.__defaults.get(name, None)]
+ return self.__cache[name][0]
def getall(self, name):
- if self.__cache.has_key(name):
+ self.load()
+ try:
return self.__cache[name]
- values = Run('git', 'config', '--get-all', name
- ).returns([0, 1]).output_lines()
- self.__cache[name] = values
- return values
+ except KeyError:
+ return []
def getint(self, name):
value = self.get(name)
"""Rename a section in the config file. Silently do nothing if
the section doesn't exist."""
Run('git', 'config', '--rename-section', from_name, to_name
- ).returns([0, 1]).run()
+ ).returns([0, 1, 128]).run()
self.__cache.clear()
def remove_section(self, name):
"""Remove a section in the config file. Silently do nothing if
the section doesn't exist."""
Run('git', 'config', '--remove-section', name
- ).returns([0, 1]).discard_stderr().discard_output()
+ ).returns([0, 1, 128]).discard_stderr().discard_output()
self.__cache.clear()
def set(self, name, value):