git/list[1] front-page[2] threads[3] people[4] search[5] about
 

gitconfig - interaction between credential.helper and includeIf

From
RVRyan Vu <ryanvu87@gmail.com>
Date
Jun 25, 2024, 05:59 UTC
Message-ID
<CAF4erGWF+Lx=K09yFhd_abC2M5b5Ab0vM2uehkdVmridmsHqDg@mail.gmail.com>
What did you do before the bug happened? (Steps to reproduce your issue)
I created the following files:
``` ~/workspace/.gitconfig-workspace
[credential]
    helper = store --file ~/workspace/.git-credentials-workspace
```
``` ~/.gitconfig
[credential]
    helper = store
[includeIf "gitdir:~/workspace/"]
    path = ~/workspace/.gitconfig-workspace
```
I then tried to use my credentials in a repository under `~/workspace`.
What did you expect to happen? (Expected behavior)

I expected that within `~/workspace`, the credential file would be `~/workspace/.git-credentials-workspace`.

I expected that outside `~/workspace`, the credential file would be `~/.git-credentials`.

The two `.git-credentials*` files have different credentials to the same URL.
What happened instead? (Actual behavior)

The credentials within file `~/workspace/.git-credentials-workspace` are not being properly applied for repositories within `~/workspace`.

What's different between what you expected and what actually happened?

I expected that `~/.git-credentials` and `~/workspace/.git-credentials-workspace` would be isolated from each other. But there are interactions even though `includeIf` was used.

Anything else you want to add:
The following configuration works:
``` ~/.gitconfig
[credential]
    helper = store
[includeIf "gitdir:~/workspace/"]
    path = ~/workspace/.gitconfig-workspace
[includeIf "gitdir:~/another-workspace/"]
    path = ~/another-workspace/.gitconfig-another-workspace
```
``` ~/another-workspace/.gitconfig-another-workspace
[credential]
    helper = store --file ~/another-workspace/.git-credentials-another-workspace
```

This is not ideal as repositories must be contained within these enumerated paths.

This configuration has unexpected behavior:
``` ~/.gitconfig
[includeIf "gitdir:~/workspace/"]
    path = ~/workspace/.gitconfig-workspace
[credential]
    helper = store
```

The credential in `~/workspace/.git-credentials-workspace` will be accessed and then stored into `~/.git-credentials`. Git is interacting with both files.

Please review the rest of the bug report below. You can delete any lines you don't wish to share.

[System Info] git version: git version 2.45.2 cpu: arm64 no commit associated with this build sizeof-long: 8 sizeof-size_t: 8 shell-path: /bin/sh feature: fsmonitor--daemon uname: Darwin 23.5.0 Darwin Kernel Version 23.5.0: Wed May 1 20:12:58 PDT 2024; root:xnu-10063.121.3~5/RELEASE_ARM64_T6000 arm64 compiler info: clang: 15.0.0 (clang-1500.3.9.4) libc info: no libc information available $SHELL (typically, interactive shell): /bin/zsh

[Enabled Hooks]
Next: Jeff King
Message 1 of 3 in “gitconfig - interaction between credential.helper and includeIf”
  1. Ryan VuJun 25, 2024
  2. Jeff KingJun 25, 2024
  3. Ryan VuJun 25, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.