GitPython icon indicating copy to clipboard operation
GitPython copied to clipboard

GitConfigParser misparses quotes in options

Open cjwatson opened this issue 1 year ago • 1 comments

My ~/.gitconfig starts like this:

[user]
        name = "Colin Watson"
        email = "[email protected]"

It's been like that for a long time, so I don't remember whether an old version of git config wrote it like that, or whether I put it there by hand. Anyway, git itself has always been fine with this. The relevant part of git-config(1) says:

A line that defines a value can be continued to the next line by ending it with a ; the backslash and the end-of-line are stripped. Leading whitespaces after name =, the remainder of the line after the first comment character # or ;, and trailing whitespaces of the line are discarded unless they are enclosed in double quotes. Internal whitespaces within the value are retained verbatim.

Inside double quotes, double quote " and backslash \ characters must be escaped: use " for " and \ for .

The following escape sequences (beside " and \) are recognized: \n for newline character (NL), \t for horizontal tabulation (HT, TAB) and \b for backspace (BS). Other char escape sequences (including octal escape sequences) are invalid.

But when I create a commit using IndexFile.commit(), I get this in the commit metadata, which I'm pretty sure is malformed:

Author: "Colin Watson" <"[email protected]">

I think GitConfigParser should match the parsing rules that git config follows.

cjwatson avatar May 31 '24 14:05 cjwatson

Thanks a lot for reporting!

The config parser here is based on the INI config parser, which makes it very much non-conforming to the Git specification. Fixes on top of that can certainly be done though, hoping they won't introduce more problems than they solve.

Byron avatar Jun 01 '24 06:06 Byron

This is a problem as GitHub won't recognize the quoted version, so commits aren't liked to the authors profile.

katexochen avatar Nov 02 '24 10:11 katexochen

i just stumbled upon the same problem and tried my hand at a fix in #2035.

betaboon avatar Jun 06 '25 20:06 betaboon