Thread (1 message) 1 message, 1 author, 2025-08-25

Re: [RFC] Allow includeIf.hasconfig to take precedence over includeIf.gitdir

From: Junio C Hamano <hidden>
Date: 2025-08-25 19:40:20

"engdoc" [off-list ref] writes:

[administrivia: please wrap overly long lines]
Background:

Currently, when both includeIf.gitdir and includeIf.hasconfig
conditions match for a repository, Git always processes gitdir
first, regardless of the order in the config file.
Is that true?  I created an empty repository in /var/tmp/x/includeIf
and added this in its .git/config file:

        [core]
                repositoryformatversion = 0
                filemode = true
                bare = false
                logallrefupdates = true

        [includeIf "hasconfig:remote.*.url:*"]
                path = /var/tmp/x/includeIf/.git/hasRemote

        [includeIf "gitdir:/var/tmp/x/includeIf/.git"]
                path = /var/tmp/x/includeIf/.git/Here

        [remote "this"]
                url = .

where hasRemote and Here each have a single line

	[jch] included = hasRemote  # in hasRemote
	[jch] included = Here       # in Here

With that preparation done, I tried

    $ git config list --local --includes
    core.repositoryformatversion=0
    core.filemode=true
    core.bare=false
    core.logallrefupdates=true
    includeif.hasconfig:remote.*.url:*.path=/var/tmp/x/includeIf/.git/hasRemote
    jch.included=hasRemote
    includeif.gitdir:/var/tmp/x/includeIf/.git.path=/var/tmp/x/includeIf/.git/Here
    jch.included=Here
    remote.this.url=.

Notice that the multi-valued configuration variable jch.included
gets hasRemote first and then Here second.

Then I swapped the two includeIf in the .git/config file and ran the
experiment again.

    $ git config list --local --includes
    core.repositoryformatversion=0
    core.filemode=true
    core.bare=false
    core.logallrefupdates=true
    includeif.gitdir:/var/tmp/x/includeIf/.git.path=/var/tmp/x/includeIf/.git/Here
    jch.included=Here
    includeif.hasconfig:remote.*.url:*.path=/var/tmp/x/includeIf/.git/hasRemote
    jch.included=hasRemote
    remote.this.url=.

I do not doubt that you are having some problem, but it does not
look to me that your description above points to the source of the
problem.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help