◐ Shell
clean mode source ↗

Fix GitConfigParser ignoring multiple [include] path entries by daniel7an · Pull Request #2100 · gitpython-developers/GitPython

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