From: Phillip Wood Date: Mon, 21 Nov 2022 15:51:23 GMT Subject: Re: [PATCH] config: introduce an Operating System-specific `includeIf` condition Message-ID: In-Reply-To: <221121.86pmdgbdwa.gmgdl@evledraar.gmail.com> Hi Dscho and Ævar On 21/11/2022 13:51, Ævar Arnfjörð Bjarmason wrote: > > On Mon, Nov 21 2022, Johannes Schindelin via GitGitGadget wrote: > >> From: Johannes Schindelin >> >> It is relatively common for users to maintain identical `~/.gitconfig` >> files across all of their setups, using the `includeIf` construct >> liberally to adjust the settings to the respective setup as needed. >> >> In case of Operating System-specific adjustments, Git currently offers >> no support to the users and they typically use a work-around like this: >> >> [includeIf "gitdir:/home/"] >> path = ~/.gitconfig-linux >> [includeIf "gitdir:/Users/"] >> path = ~/.gitconfig-mac >> [includeIf "gitdir:C:"] >> path = ~/.gitconfig-windows >> >> However, this is fragile, as it would not even allow to discern between >> Operating Systems that happen to host their home directories in >> `/home/`, such as Linux and the BSDs. > > This looks like a really sensible thing to do, thanks. Yes, it looks like a really useful enhancement >> +`os`:: >> + The data that follows this keyword is taken as the name of an >> + Operating System; If it matches the output of `uname -s`, the Maybe add e.g. "Windows or Linux" after Operating System? >> +static int include_by_os(const char *cond, size_t cond_len) >> +{ >> + struct utsname uname_info; >> + >> + return !uname(&uname_info) && >> + !strncasecmp(uname_info.sysname, cond, cond_len) && > > Our config.mak.uname doesn't to case-insensitive uname matching, and > AFAIK these don't change between platforms versions. So why do we need > to support LINUX, LiNuX etc. in addition to the canonical Linux? > > I'm not opposed to it if there's a good reason, but as we have "gitdir" > and "gitdir/i" shouldn't we make that "os/i" for consistency, if it's > needed? Why should we penalize users who write "linux" rather than "Linux"? Making the comparison case insensitive seems eminently sensible. File systems can be case sensitive so having the option to specify whether a match for "gitdir" is case sensitive or not makes sense there but not for the name of an operating system. Best Wishes Phillip