Re: [RFC] Allow includeIf.hasconfig to take precedence over includeIf.gitdir
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 25, 2025, 19:40 UTC
- Message-ID
- <xmqq1pozqjfi.fsf@gitster.g>
- In-Reply-To
- <a903afc8-9bf6-4ba8-bdab-87a76adf631e.engdoc@aliyun.com>
"engdoc" <engdoc@aliyun.com> writes:
[administrivia: please wrap overly long lines]
Show 5 quoted 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.