Skip to content

GitConfigParser misparses quotes in options #1923

Closed
@cjwatson

Description

@cjwatson

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

Byron commented on Jun 1, 2024

@Byron
Member

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

katexochen commented on Nov 2, 2024

@katexochen

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

betaboon

betaboon commented on Jun 6, 2025

@betaboon
Contributor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      Participants

      @Byron@cjwatson@betaboon@katexochen

      Issue actions

        GitConfigParser misparses quotes in options · Issue #1923 · gitpython-developers/GitPython