GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — Preserve quoted leading and trailing single-line config var whitespace by EliahKagan · Pull Request #2036 · gitpython-developers/GitPython

Conversation

@EliahKagan

@EliahKagan EliahKagan commented Jun 7, 2025

Copy link
Copy Markdown
Member

#2035 fixed issue #1923 by removing separate double quotation marks appearing on a single-line configuration variable when parsing a configuration file. However, as noted in #2035 (comment), it also stripped leading and trailing whitespace from the string obtained by removing the quotes.

In this PR:

  1. 5f30320 adds a test case of a plausible--and in my view, decisive--scenario where such whitespace needs to be preserved and where a user would almost certainly expect it to preserve. This test would also have failed before #2035, due to the absence of quote removal. But it is the sort of value that one would expect to parse correctly now that #1923 is fixed, and which #2035 almost does parse correctly.
  2. bd2b930 fixes the case by removing the strip() call while leaving the changes from #2035 otherwise intact. The test added in (1) fails until this change, and then passes.

See the commit message for further details.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
EliahKagan added 2 commits June 7, 2025 01:22
@EliahKagan
Test a quoted config var with meaningful edge whitespace
5f30320
gitpython-developers#2035 fixed issue gitpython-developers#1923 by removing separate double quotation marks
appearing on a single-line configuration variable when parsing a
configuration file. However, it also stripped leading and trailing
whitespace from the string obtained by removing the quotes.

This adds a test case of a plausible scenario where such whitespace
needs to be preserved and where a user would almost certainly expect
it to preserve: setting a value like `# ` for `core.commentString`,
in order to be able to easily create commit messages like this one,
that contain a line that begins with a literal `#`, while still
letting `#` in the more common case that it is followed by a space
be interpreted as a comment.

The effect of  `git config --local core.commentString '# '` is to
add a `commentString = "# "` line in the `[core]` section of
`.git/config`. The changes in gitpython-developers#2035 allow us to correctly parse
more quoted strings than before, and almost allow us to parse this,
but not quite, because of the `strip()` operation that turns `# `
into `#`.
@EliahKagan
Preserve quoted leading and trailing single-line whitespace
bd2b930
At least in a single line, whitespace in a double-quoted value in a
configuration file, like `name = " abc def "`, would presumably be
intended. This removes the `strip()` call that is applied to text
`ConfigParser` obtained by removing the double quotes around it.

This slightly refines the changes in gitpython-developers#2035 by dropping the `strip()`
call while continuing to remove opening and closing double quotes.
@EliahKagan
EliahKagan marked this pull request as ready for review June 7, 2025 05:31
@EliahKagan
EliahKagan requested a review from Byron June 7, 2025 05:31
@EliahKagan EliahKagan mentioned this pull request Jun 7, 2025
Fix GitConfigParser not removing quotes from values #2035
Merged
Byron
Byron approved these changes Jun 7, 2025
View reviewed changes

@Byron Byron left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot for this, a great catch!

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

EliahKagan reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
@Byron
Byron merged commit cf8029d into gitpython-developers:main Jun 7, 2025
@EliahKagan
EliahKagan deleted the quoted-whitespace branch June 7, 2025 05:59
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Jun 7, 2025
@EliahKagan
Test ConfigParser with whitespace outside the value
e5a2db5
In both the:

- Unquoted case, where extra whitespace is at the edges of what can
  be parsed as the value.

- Quoted case, where extra whitespace is next to but outside of the
  quotes.

The case where the whitespace is at the edges of the quoted value
and *inside* the quotes, and thus part of the value, is already
covered in gitpython-developers#2036. (That is merely renamed here, to distinguish it.)
@EliahKagan EliahKagan mentioned this pull request Jun 7, 2025
Test ConfigParser with whitespace outside the value #2046
Merged
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Jun 8, 2025
@EliahKagan
Don't remove quotes if \ or " are present inside
dacd198
This is for single line quoting in the ConfigParser.

This leaves the changes in gitpython-developers#2035 (as adjusted in gitpython-developers#2036) intact for
the cases where it addressed gitpython-developers#1923: when the `...` in `"..."`
(appearing in the value position on a single `{name} = {value}"`
line) has no occurrences of `\` or `"`, quote removal is enough.

But when `\` or `"` does appear, this suppresses quote removal.
This is with the idea that, while it would be better to interpret
such lines as Git does, we do not yet do that, so it is preferable
to return the same results we have in the past (which some programs
may already be handling themselves).

This should make the test introduced in the preceding commit pass.
But it will be even better to support more syntax, at least
well-formed escapes. As noted in the test, both the test and the
code under test can be adjusted for that.

(See comments in gitpython-developers#2035 for context.)
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Jun 8, 2025
@EliahKagan
Don't remove quotes if \ or " are present inside
531dc34
This is for single line quoting in the ConfigParser.

This leaves the changes in gitpython-developers#2035 (as adjusted in gitpython-developers#2036) intact for
the cases where it addressed gitpython-developers#1923: when the `...` in `"..."`
(appearing in the value position on a single `{name} = {value}"`
line) has no occurrences of `\` or `"`, quote removal is enough.

But when `\` or `"` does appear, this suppresses quote removal.
This is with the idea that, while it would be better to interpret
such lines as Git does, we do not yet do that, so it is preferable
to return the same results we have in the past (which some programs
may already be handling themselves).

This should make the test introduced in the preceding commit pass.
But it will be even better to support more syntax, at least
well-formed escapes. As noted in the test, both the test and the
code under test can be adjusted for that.

(See comments in gitpython-developers#2035 for context.)
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Jun 8, 2025
@EliahKagan
Don't remove quotes if \ or " are present inside
f2b8041
This is for single line quoting in the ConfigParser.

This leaves the changes in gitpython-developers#2035 (as adjusted in gitpython-developers#2036) intact for
the cases where it addressed gitpython-developers#1923: when the `...` in `"..."`
(appearing in the value position on a single `{name} = {value}"`
line) has no occurrences of `\` or `"`, quote removal is enough.

But when `\` or `"` does appear, this suppresses quote removal.
This is with the idea that, while it would be better to interpret
such lines as Git does, we do not yet do that, so it is preferable
to return the same results we have in the past (which some programs
may already be handling themselves).

This should make the test introduced in the preceding commit pass.
But it will be even better to support more syntax, at least
well-formed escapes. As noted in the test, both the test and the
code under test can be adjusted for that.

(See comments in gitpython-developers#2035 for context.)
@EliahKagan EliahKagan mentioned this pull request Jun 8, 2025
Don't remove quotes if \ or " are present inside #2048
Merged
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Jun 8, 2025
@EliahKagan
Don't remove quotes if \ or " are present inside
8eb30e7
This is for single line quoting in the ConfigParser.

This leaves the changes in gitpython-developers#2035 (as adjusted in gitpython-developers#2036) intact for
the cases where it addressed gitpython-developers#1923: when the `...` in `"..."`
(appearing in the value position on a single `{name} = {value}"`
line) has no occurrences of `\` or `"`, quote removal is enough.

But when `\` or `"` does appear, this suppresses quote removal.
This is with the idea that, while it would be better to interpret
such lines as Git does, we do not yet do that, so it is preferable
to return the same results we have in the past (which some programs
may already be handling themselves).

This should make the test introduced in the preceding commit pass.
But it will be even better to support more syntax, at least
well-formed escapes. As noted in the test, both the test and the
code under test can be adjusted for that.

(See comments in gitpython-developers#2035 for context.)
EliahKagan added a commit to EliahKagan/GitPython that referenced this pull request Jun 8, 2025
@EliahKagan
Don't remove quotes if \ or " are present inside
4dcd0b5
This is for single line quoting in the ConfigParser.

This leaves the changes in gitpython-developers#2035 (as adjusted in gitpython-developers#2036) intact for
the cases where it addressed gitpython-developers#1923: when the `...` in `"..."`
(appearing in the value position on a single `{name} = {value}"`
line) has no occurrences of `\` or `"`, quote removal is enough.

But when `\` or `"` does appear, this suppresses quote removal.
This is with the idea that, while it would be better to interpret
such lines as Git does, we do not yet do that, so it is preferable
to return the same results we have in the past (which some programs
may already be handling themselves).

This should make the test introduced in the preceding commit pass.
But it will be even better to support more syntax, at least
well-formed escapes. As noted in the test, both the test and the
code under test can be adjusted for that.

(See comments in gitpython-developers#2035 for context.)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@Byron Byron Byron approved these changes

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@EliahKagan @Byron
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.