git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git makes it impossible to ignore or override global gitconfig, needs `GITCONFIGFILE`

From
TCTimothee Cour <timothee.cour2@gmail.com>
Date
Mar 20, 2020, 02:28 UTC
Message-ID
<CANri+EzrP0TeHTfjhsf=LZkwkEZU7fSRnnKN9NLga7CNow9F0Q@mail.gmail.com>
In-Reply-To
<20200319165149.GA4074934@coredump.intra.peff.net>
* GIT_CONFIG doesn't work as you mentioned and as was already
mentioned in https://stackoverflow.com/questions/23400449/how-to-make-git-temporarily-ignore-gitconfig
* `HOME= `doesn't work for many reasons: it breaks other commands as
you mentioned, it breaks `~`, and it doesn't work if users' git config
is in /Users/timothee/.config//git/config ; and pointing it to an
alternate home where you'd have `newhome/.gitconfig`  would require a
lot of workarounds to update paths including `~`
*  `XDG_CONFIG_HOME= ` also doesn't work (even if users' git config is
in /Users/timothee/.config//git/config), which really seems buggy,
eg:`XDG_CONFIG_HOME= git diff HEAD^` is still reading
`/Users/timothee/.config//git/config` somehow
* GIT_CONFIG_NOGLOBAL is also not good, I want to be able to simply
point my config to some place else, not simply suppress reading git
config
* require passing commands (eg `git -c`) is not good either; it'd
require updating scripts that rely on git (this could be arbitrarily
complex, sometimes impossible if you just have a binary and no source
code access)

In contrast, what I'm suggesting is extremely simple to use, robust, and my understanding is it shouldn't be hard to implement. ``` GITCONFIGFILE= git diff HEAD^ # empty config GITCONFIGFILE=/pathto/gitconfig2 git diff HEAD^ # uses specified git config file GITCONFIGFILE=/pathto/gitconfig2 run_some_complex_script # uses specified git config file everywhere ``` by contrast, any approach based on passing command line flag (eg `git -c /pathto/gitconfig2 diff HEAD^`) will make the last case impossible to do since you'd need to update every git command inside (which could be in a compiled binary, etc)

What i'm asking is the analog of `TIGRC_USER` for tig (https://jonas.github.io/tig/doc/tig.1.html) and many other programs

On Thu, Mar 19, 2020 at 9:51 AM Jeff King <peff@peff.net> wrote:
Show 39 quoted lines
>
> On Thu, Mar 19, 2020 at 06:44:07AM +0000, Eric Wong wrote:
>
> > Timothee Cour <thelastmammoth@gmail.com> wrote:
> > > git makes it impossible to ignore global gitconfig. This is
> > > essentially what's being asked here:
> > > https://stackoverflow.com/questions/23400449/how-to-make-git-temporarily-ignore-gitconfig
> > >
> > > ## proposal:
> > > add an environment variable (like for tig and other programs), eg:
> > > `GITCONFIGFILE=~/.gitconfig_temp git diff`
> > > seems like an easy change that would make it easy for users to ignore
> > > or override their gitconfig
> >
> > You can use GIT_CONFIG for that, and there's also
> > GIT_CONFIG_NOSYSTEM.  They're both documented in the
> > git-config(5) manpage.
>
> I don't think $GIT_CONFIG is what Timothee whats. It only affects the
> git-config command, not config lookup in other programs. And it
> overrides _all_ config lookup, as if "git config --file" had been used.
>
> There's no variable to suppress just the user-level gitconfig. The usual
> technique (that we use in the test scripts) is to point $HOME somewhere
> else, but that may affect other programs.
>
> I wouldn't be opposed to GIT_CONFIG_NOGLOBAL if there's a use case, but
> it sounds like the desire is to actually provide new config. That can
> also be done for specific options with "git -c". Under the hood that is
> using GIT_CONFIG_PARAMETERS in the environment; you can set it
> individually, but note that it's a little picky about quoting (the
> individual keys are shell-quoted, but it insists that there is an outer
> layer of single-quotes, even if they weren't necessary; I wouldn't be
> opposed to making it more friendly). You can see what it produces like
> this:
>
>   git -c alias.dump='!echo "$GIT_CONFIG_PARAMETERS"' dump
>
> -Peff
Previous: Jeff KingNext: Jeff King
Message 4 of 5 in “git makes it impossible to ignore or override global gitconfig, needs `GITCONFIGFILE`”
  1. Timothee CourMar 19, 2020
  2. Eric WongMar 19, 2020
  3. Jeff KingMar 19, 2020
  4. Timothee CourMar 20, 2020
  5. Jeff KingMar 20, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.