This is the same as #1581 , which OP closed because they claimed they could not repro it, but it definitely repros.
The issue is that gcm calls git config --global and git config --local to look for the credential.username config, both of which do not expand includeIf'd files.
(All of these commands run in the repository directory.)
$ git --version
git version 2.53.0
$ ~/.local/lib/git-credential-manager/git-credential-manager --version
2.7.3+5fa7116896c82164996a609accd1c5ad90fe730a
$ cat ~/.config/git/config
...
[includeIf "hasconfig:remote.*.url:https://dev.azure.com/**"]
path = ~/.config/git/config-ado
$ cat ~/.config/git/config-ado # Contains exactly what gcm tries to add to ~/.config/git/config because it think it's not set
...
[credential "azrepos:org/msazure"]
username = foo@example.com
$ strace -fe execve -s 99 -- git pull --all --prune |& grep 'git.*config.*credential'
...
[pid 754151] execve("/usr/libexec/git/git", ["/usr/libexec/git/git", "config", "--null", "--local", "credential.azrepos:org/msazure.username"], 0x7f6e040cf250 /* 93 vars */) = 0
[pid 754152] execve("/usr/libexec/git/git", ["/usr/libexec/git/git", "config", "--null", "--global", "credential.azrepos:org/msazure.username"], 0x7f6e040cf250 /* 93 vars */) = 0
...
^C
$ git config --local 'credential.azrepos:org/msazure.username' # With --local as gcm calls it, returns nothing
$ git config --global 'credential.azrepos:org/msazure.username' # With --global as gcm calls it, returns nothing
$ git config 'credential.azrepos:org/msazure.username' # Without --local or --global, returns value from includeIf'd config
foo@example.com
$ git config --global --list # The reason is that config --global just returns the `includeIf` directives as-is instead of expanding them.
...
includeif.hasconfig:remote.*.url:https://dev.azure.com/**.path=~/.config/git/config-ado
$ git config --list # ... whereas without --global it does expand them.
...
includeif.hasconfig:remote.*.url:https://dev.azure.com/**.path=~/.config/git/config-ado
...
credential.azrepos:org/msazure.username=foo@example.com
...
This is the same as #1581 , which OP closed because they claimed they could not repro it, but it definitely repros.
The issue is that gcm calls
git config --globalandgit config --localto look for thecredential.usernameconfig, both of which do not expandincludeIf'dfiles.(All of these commands run in the repository directory.)