Re: [BUG] git config --global: doc and behaviour disagree when ~/.gitconfig and XDG config file coexist

Ben Knoble <[email protected]> Fri, 31 Jul 2026 09:14:07 +0900
Newsgroups org.kernel.vger.git
Message-ID <[email protected]>
> Le 31 juil. 2026 à 05:35, Junio C Hamano <[email protected]> a écrit :
> 
> Nils Fahldieck <[email protected]> writes:
> 
>> 1. The writing claim is inaccurate.
>> 
>>   The docs say XDG is used when ~/.gitconfig "doesn't exist".  The
>>   code tests READABILITY (R_OK), not existence.  A zero-byte file
>>   created by "touch ~/.gitconfig" is readable, so access_or_warn
>>   returns 0 (success), the condition is false, and XDG is silently
>>   ignored even though ~/.gitconfig is empty.
>> 
>>   The condition should be described as "when ~/.gitconfig is not
>>   readable", not "when it doesn't exist".
> 
> I do not understand this part.  If you have a file that is not even
> readable by you, it is not very useful and no better than the case
> the file did not exist.  Also, if the file exists and readable,
> between a 0-byte and one liner ~/.gitconfig there shouldn't be any
> difference in behaviour, no?
> 
> So, "when the file does not exist or even if the file exists is not
> readble, then it is not used and the other file is used instead"
> would probably be technically more correct, but I am not sure if
> such a change has much value (unless you are trying to be very
> pedantic).

My thoughts as well. A readable 0-byte file is not a counterexample to the docs; if such a file is readable then it exists, and is used as documented, no?

>> 2. The reading claim is outright wrong.
>> 
>>   The docs say --global reads from BOTH files.  The code reads from
>>   ONE.  git_global_config() selects a winner and frees the other
>>   path.  There is no code path under --global that reads both files.
> 
> The documentation needs to be corrected, I think.

Agreed based on recent thread <[email protected]> (subject « git config: unintuitive behavior with - -global and - -no-includes » in case I have mis-transcribed the message ID, a necessity to maintain plain-text mail from my mobile phone, ahem).

Best,
Ben