Description
My ~/.gitconfig
starts like this:
[user]
name = "Colin Watson"
email = "cjwatson@debian.org"
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" <"cjwatson@debian.org">
I think GitConfigParser
should match the parsing rules that git config
follows.
Activity
Byron commentedon Jun 1, 2024
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.
katexochen commentedon Nov 2, 2024
This is a problem as GitHub won't recognize the quoted version, so commits aren't liked to the authors profile.
betaboon commentedon Jun 6, 2025
i just stumbled upon the same problem and tried my hand at a fix in #2035.
Test a quoted config var with meaningful edge whitespace
Test a quoted config var with meaningful edge whitespace
Don't remove quotes if `\` or `"` are present inside
""
handling in ConfigParser #2047Don't remove quotes if `\` or `"` are present inside
Don't remove quotes if `\` or `"` are present inside
\
or"
are present inside #2048Don't remove quotes if `\` or `"` are present inside
Don't remove quotes if `\` or `"` are present inside