Skip to content

Conversation

@daniel7an
Copy link

Problem

When an [include] section has multiple entries with the same key (e.g. multiple path values), only the last one was respected:

[include]
    path = ~/.config/git/maintenance.config
    path = ~/.config/git/my-config

Only my-config would be included. This is valid git config per git help config:

These variables can be given multiple times.

Root Cause

_included_paths() used self.items(section) which delegates to _OMD.items(). The _OMD.__getitem__ method returns only the last value for a given key, so duplicate keys (like multiple path entries) were lost.

Fix

Use _OMD.items_all() to retrieve all values for each key in include/includeIf sections, ensuring every path is processed.

Test

Added test_multiple_include_paths_with_same_key that creates a config with two path entries under a single [include] section and verifies both included files are loaded.

Fixes #2099

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 the
include/includeIf sections, ensuring all paths are processed.

Fixes gitpython-developers#2099
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

GitConfigParser ignores multiple [include] paths

1 participant