Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork966
Fix GitConfigParser ignoring multiple [include] path entries#2100
Conversation
When an [include] section has multiple entries with the same key (e.g.multiple 'path' values), only the last one was respected. This is because_included_paths() used self.items(section) which delegates to _OMD.items(),and _OMD.__getitem__ returns only the last value for a given key.Fix by using _OMD.items_all() to retrieve all values for each key in theinclude/includeIf sections, ensuring all paths are processed.Fixesgitpython-developers#2099
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.
Pull request overview
This PR fixes a bug where GitConfigParser only respected the lastpath entry when multiplepath values were specified under a single[include] or[includeIf] section. Git config allows multiple values for the same key (as documented ingit help config), but GitPython was silently ignoring all but the last value due to using_OMD.items() which only returns the last value for each key.
Changes:
- Modified
_included_paths()to use a new_all_items()helper that calls_OMD.items_all()to retrieve all values for duplicate keys - Applied the fix to all four include scenarios: basic
[include], and[includeIf]with gitdir, onbranch, and hasconfig conditions - Added comprehensive test coverage for multiple path entries under a single
[include]section
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| git/config.py | Added_all_items() helper function and updated all four call sites in_included_paths() to use it instead ofself.items() |
| test/test_config.py | Addedtest_multiple_include_paths_with_same_key to verify multiple path entries are all processed correctly |
💡Add Copilot custom instructions for smarter, more guided reviews.Learn how to get started.
Byron commentedFeb 14, 2026
Thanks a lot, it's much appreciated. |
22e0b52 intogitpython-developers:mainUh oh!
There was an error while loading.Please reload this page.
Problem
When an
[include]section has multiple entries with the same key (e.g. multiplepathvalues), only the last one was respected:Only
my-configwould be included. This is valid git config pergit help config:Root Cause
_included_paths()usedself.items(section)which delegates to_OMD.items(). The_OMD.__getitem__method returns only thelast value for a given key, so duplicate keys (like multiplepathentries) were lost.Fix
Use
_OMD.items_all()to retrieveall values for each key in include/includeIf sections, ensuring every path is processed.Test
Added
test_multiple_include_paths_with_same_keythat creates a config with twopathentries under a single[include]section and verifies both included files are loaded.Fixes#2099