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