diff options
author | Sebastian Thiel <byronimo@gmail.com> | 2011-06-07 19:58:06 +0200 |
---|---|---|
committer | Sebastian Thiel <byronimo@gmail.com> | 2011-06-07 20:09:40 +0200 |
commit | 5b3b65287e6849628066d5b9d08ec40c260a94dc (patch) | |
tree | 86fa935d8237af1ebb67b14baac3585086655333 /git/config.py | |
parent | b3061698403f0055d1d63be6ab3fbb43bd954e8e (diff) | |
download | gitpython-5b3b65287e6849628066d5b9d08ec40c260a94dc.tar.gz |
Greatly improved robustness of config parser - it can now take pretty much everything. Includes an updated config file which includes all the new additions
Diffstat (limited to 'git/config.py')
-rw-r--r-- | git/config.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/git/config.py b/git/config.py index 209f2ffe..c71bb8ca 100644 --- a/git/config.py +++ b/git/config.py @@ -120,6 +120,7 @@ class GitConfigParser(cp.RawConfigParser, object): # They must be compatible to the LockFile interface. # A suitable alternative would be the BlockingLockFile t_lock = LockFile + re_comment = re.compile('^\s*[#;]') #} END configuration @@ -211,16 +212,16 @@ class GitConfigParser(cp.RawConfigParser, object): break lineno = lineno + 1 # comment or blank line? - if line.strip() == '' or line[0] in '#;': + if line.strip() == '' or self.re_comment.match(line): continue if line.split(None, 1)[0].lower() == 'rem' and line[0] in "rR": # no leading whitespace continue else: # is it a section header? - mo = self.SECTCRE.match(line) + mo = self.SECTCRE.match(line.strip()) if mo: - sectname = mo.group('header') + sectname = mo.group('header').strip() if sectname in self._sections: cursect = self._sections[sectname] elif sectname == cp.DEFAULTSECT: @@ -332,6 +333,10 @@ class GitConfigParser(cp.RawConfigParser, object): close_fp = True else: fp.seek(0) + # make sure we do not overwrite into an existing file + if hasattr(fp, 'truncate'): + fp.truncate() + #END # END handle stream or file # WRITE DATA |