threads / discuss / 37367

Location of git config on Windows

Subject: Location of git config on Windows

## tl;dr

11 messages between Aug 17, 2014 and Aug 18, 2014.

replies: 10people: 4as markdown or json

Daniel Corbe· Aug 17, 2014, 20:18 UTC · lore

I installed git on my Windows machine while it was connected to my corporate network. It picked up on that fact and used a mapped drive to store its configuration file.

As a result, I cannot currently use git when disconnected from my network. It throws the following error message: fatal: unable to access 'Z:\/.config/git/config': Invalid argument

Obviously this value is stored in the registry somewhere because I made an attempt to uninstall and reinstall git with the same results.

Can someone give me some guidance here?

Best, Daniel

P.S. A screenshot for reference: http://i.imgur.com/i9lm0Da.png
Jason Pyeron· Aug 17, 2014, 21:40 UTC · re: Daniel Corbe · lore

RE: Location of git config on Windows

Show 14 quoted lines
> -----Original Message-----
> From: Daniel Corbe
> Sent: Sunday, August 17, 2014 16:18
> 
> 
> I installed git on my Windows machine while it was connected to my
> corporate network.  It picked up on that fact and used a 
> mapped drive to
> store its configuration file.  
> 
> As a result, I cannot currently use git when disconnected from my
> network.  It throws the following error message: fatal: 
> unable to access
> 'Z:\/.config/git/config': Invalid argument
As a workaround, use subst command to map the Z: to another path on your system.
Depending on your OS and your git usage patterns you may have to perform the operation twice at both non-privilged and priviliged prompts.
Ex: 
 subst z: c:\Users\corbed\cached-z-drive
Show 7 quoted lines
> 
> Obviously this value is stored in the registry somewhere 
> because I made
> an attempt to uninstall and reinstall git with the same results.  
> 
> Can someone give me some guidance here?
> 
-Jason 
--
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
-                                                               -
- Jason Pyeron                      PD Inc. http://www.pdinc.us -
- Principal Consultant              10 West 24th Street #100    -
- +1 (443) 269-1555 x333            Baltimore, Maryland 21218   -
-                                                               -
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
This message is copyright PD Inc, subject to license 20080407P00.
Erik Faye-Lund· Aug 17, 2014, 22:01 UTC · re: Daniel Corbe · lore

Re: Location of git config on Windows

On Sun, Aug 17, 2014 at 10:18 PM, Daniel Corbe <corbe@corbe.net> wrote:
Show 13 quoted lines
>
> I installed git on my Windows machine while it was connected to my
> corporate network.  It picked up on that fact and used a mapped drive to
> store its configuration file.
>
> As a result, I cannot currently use git when disconnected from my
> network.  It throws the following error message: fatal: unable to access
> 'Z:\/.config/git/config': Invalid argument
>
> Obviously this value is stored in the registry somewhere because I made
> an attempt to uninstall and reinstall git with the same results.
>
> Can someone give me some guidance here?

Git looks for the per-user configuration in $HOME/.gitconfig, and if $HOME is not set, it falls back to $HOMEDIR/$HOMEPATH/.gitconfig. My guess would be some of these environment variables are incorrectly set on your system.

Karsten Blees· Aug 17, 2014, 23:08 UTC · re: Erik Faye-Lund · lore

Re: Location of git config on Windows

Am 18.08.2014 00:01, schrieb Erik Faye-Lund:
Show 19 quoted lines
> On Sun, Aug 17, 2014 at 10:18 PM, Daniel Corbe <corbe@corbe.net> wrote:
>>
>> I installed git on my Windows machine while it was connected to my
>> corporate network.  It picked up on that fact and used a mapped drive to
>> store its configuration file.
>>
>> As a result, I cannot currently use git when disconnected from my
>> network.  It throws the following error message: fatal: unable to access
>> 'Z:\/.config/git/config': Invalid argument
>>
>> Obviously this value is stored in the registry somewhere because I made
>> an attempt to uninstall and reinstall git with the same results.
>>
>> Can someone give me some guidance here?
> 
> Git looks for the per-user configuration in $HOME/.gitconfig, and if
> $HOME is not set, it falls back to $HOMEDIR/$HOMEPATH/.gitconfig. My
> guess would be some of these environment variables are incorrectly set
> on your system.

To be precise, git checks if %HOME% is set _and_ the directory exists before falling back to %HOMEDRIVE%%HOMEPATH%.

If %HOMEDRIVE%%HOMEPATH% isn't set or the directory doesn't exist either, it falls back to %USERPROFILE%, which is always local (C:/Users/<yourname>), even if disconnected from the network (at least that's how its supposed to be).

Daniel Corbe· Aug 18, 2014, 15:14 UTC · re: Karsten Blees · lore

Re: Location of git config on Windows

Karsten Blees <karsten.blees@gmail.com> writes:
Show 29 quoted lines
> Am 18.08.2014 00:01, schrieb Erik Faye-Lund:
>> On Sun, Aug 17, 2014 at 10:18 PM, Daniel Corbe <corbe@corbe.net> wrote:
>>>
>>> I installed git on my Windows machine while it was connected to my
>>> corporate network.  It picked up on that fact and used a mapped drive to
>>> store its configuration file.
>>>
>>> As a result, I cannot currently use git when disconnected from my
>>> network.  It throws the following error message: fatal: unable to access
>>> 'Z:\/.config/git/config': Invalid argument
>>>
>>> Obviously this value is stored in the registry somewhere because I made
>>> an attempt to uninstall and reinstall git with the same results.
>>>
>>> Can someone give me some guidance here?
>> 
>> Git looks for the per-user configuration in $HOME/.gitconfig, and if
>> $HOME is not set, it falls back to $HOMEDIR/$HOMEPATH/.gitconfig. My
>> guess would be some of these environment variables are incorrectly set
>> on your system.
>
> To be precise, git checks if %HOME% is set _and_ the directory exists before
> falling back to %HOMEDRIVE%%HOMEPATH%.
>
> If %HOMEDRIVE%%HOMEPATH% isn't set or the directory doesn't exist either, it
> falls back to %USERPROFILE%, which is always local (C:/Users/<yourname>), even
> if disconnected from the network (at least that's how its supposed to be).
>
>
Awesome!  Thanks for the advice. 
%HOMEDRIVE% and %HOMEPATH% are indeed set by my system and point to an
 (often disconnected) network drive.  I manually forced %HOME% to
 %USERPROFILE% and it works like a charm now.  

I would argue that on Windows %USERPROFILE% should be checked first (or at least after %HOME%).

Best, Daniel

Erik Faye-Lund· Aug 18, 2014, 15:25 UTC · re: Daniel Corbe · lore

Re: Location of git config on Windows

On Mon, Aug 18, 2014 at 5:14 PM, Daniel Corbe <corbe@corbe.net> wrote:
Show 41 quoted lines
>
> Karsten Blees <karsten.blees@gmail.com> writes:
>
>> Am 18.08.2014 00:01, schrieb Erik Faye-Lund:
>>> On Sun, Aug 17, 2014 at 10:18 PM, Daniel Corbe <corbe@corbe.net> wrote:
>>>>
>>>> I installed git on my Windows machine while it was connected to my
>>>> corporate network.  It picked up on that fact and used a mapped drive to
>>>> store its configuration file.
>>>>
>>>> As a result, I cannot currently use git when disconnected from my
>>>> network.  It throws the following error message: fatal: unable to access
>>>> 'Z:\/.config/git/config': Invalid argument
>>>>
>>>> Obviously this value is stored in the registry somewhere because I made
>>>> an attempt to uninstall and reinstall git with the same results.
>>>>
>>>> Can someone give me some guidance here?
>>>
>>> Git looks for the per-user configuration in $HOME/.gitconfig, and if
>>> $HOME is not set, it falls back to $HOMEDIR/$HOMEPATH/.gitconfig. My
>>> guess would be some of these environment variables are incorrectly set
>>> on your system.
>>
>> To be precise, git checks if %HOME% is set _and_ the directory exists before
>> falling back to %HOMEDRIVE%%HOMEPATH%.
>>
>> If %HOMEDRIVE%%HOMEPATH% isn't set or the directory doesn't exist either, it
>> falls back to %USERPROFILE%, which is always local (C:/Users/<yourname>), even
>> if disconnected from the network (at least that's how its supposed to be).
>>
>>
>
> Awesome!  Thanks for the advice.
>
> %HOMEDRIVE% and %HOMEPATH% are indeed set by my system and point to an
>  (often disconnected) network drive.  I manually forced %HOME% to
>  %USERPROFILE% and it works like a charm now.
>
> I would argue that on Windows %USERPROFILE% should be checked first (or
> at least after %HOME%).
Why? Then people won't be able to have their config files on network-shares, no?

I think a somewhat better approach would be to resolve the home directory lazily, unless %HOME% is set. That way we can check that %HOMEDRIVE%%HOMEPATH% actually exists as it's being accessed. Or you could just restart your shell when you disconnect...

Daniel Corbe· Aug 18, 2014, 15:40 UTC · re: Erik Faye-Lund · lore

Re: Location of git config on Windows

Erik Faye-Lund <kusmabite@gmail.com> writes:
> Or you could just restart your shell when you disconnect...

Well I'm not that daft. I tried that and if it had resolved my problem I wouldn't have posted.

Erik Faye-Lund· Aug 18, 2014, 15:47 UTC · re: Daniel Corbe · lore

Re: Location of git config on Windows

On Mon, Aug 18, 2014 at 5:40 PM, Daniel Corbe <corbe@corbe.net> wrote:
Show 7 quoted lines
>
> Erik Faye-Lund <kusmabite@gmail.com> writes:
>
>> Or you could just restart your shell when you disconnect...
>
> Well I'm not that daft.  I tried that and if it had resolved my problem
> I wouldn't have posted.

Hm, but isn't that what Karsten explains in his last paragraph? What shell are you running msys or cmd?

Erik Faye-Lund· Aug 18, 2014, 15:51 UTC · re: Erik Faye-Lund · lore

Re: Location of git config on Windows

On Mon, Aug 18, 2014 at 5:47 PM, Erik Faye-Lund <kusmabite@gmail.com> wrote:
Show 11 quoted lines
> On Mon, Aug 18, 2014 at 5:40 PM, Daniel Corbe <corbe@corbe.net> wrote:
>>
>> Erik Faye-Lund <kusmabite@gmail.com> writes:
>>
>>> Or you could just restart your shell when you disconnect...
>>
>> Well I'm not that daft.  I tried that and if it had resolved my problem
>> I wouldn't have posted.
>
> Hm, but isn't that what Karsten explains in his last paragraph? What
> shell are you running msys or cmd?
Our /etc/profile does this:
https://github.com/msysgit/msysgit/blob/master/etc/profile#L38
...however, our git-wrapper only does this:
https://github.com/msysgit/msysgit/blob/master/src/git-wrapper/git-wrapper.c#L71

So yeah, we don't seem to actually check if %HOMEDRIVE%%HOMEPATH% exists. Perhaps fixing this is the right thing to do then? Since the git-wrapper is run for *every* invokation of git, you wouldn't even have to restart the shell in this case.

Daniel Corbe· Aug 18, 2014, 17:05 UTC · re: Erik Faye-Lund · lore

Re: Location of git config on Windows

Erik Faye-Lund <kusmabite@gmail.com> writes:
Show 25 quoted lines
> On Mon, Aug 18, 2014 at 5:47 PM, Erik Faye-Lund <kusmabite@gmail.com> wrote:
>> On Mon, Aug 18, 2014 at 5:40 PM, Daniel Corbe <corbe@corbe.net> wrote:
>>>
>>> Erik Faye-Lund <kusmabite@gmail.com> writes:
>>>
>>>> Or you could just restart your shell when you disconnect...
>>>
>>> Well I'm not that daft.  I tried that and if it had resolved my problem
>>> I wouldn't have posted.
>>
>> Hm, but isn't that what Karsten explains in his last paragraph? What
>> shell are you running msys or cmd?
>
> Our /etc/profile does this:
>
> https://github.com/msysgit/msysgit/blob/master/etc/profile#L38
>
> ...however, our git-wrapper only does this:
>
> https://github.com/msysgit/msysgit/blob/master/src/git-wrapper/git-wrapper.c#L71
>
> So yeah, we don't seem to actually check if %HOMEDRIVE%%HOMEPATH%
> exists. Perhaps fixing this is the right thing to do then? Since the
> git-wrapper is run for *every* invokation of git, you wouldn't even
> have to restart the shell in this case.
But again, restarting the shell doesn't fix the problem.  
-Daniel
Erik Faye-Lund· Aug 18, 2014, 18:17 UTC · re: Daniel Corbe · lore

Re: Location of git config on Windows

On Mon, Aug 18, 2014 at 7:05 PM, Daniel Corbe <corbe@corbe.net> wrote:
Show 30 quoted lines
> Erik Faye-Lund <kusmabite@gmail.com> writes:
>
>> On Mon, Aug 18, 2014 at 5:47 PM, Erik Faye-Lund <kusmabite@gmail.com> wrote:
>>> On Mon, Aug 18, 2014 at 5:40 PM, Daniel Corbe <corbe@corbe.net> wrote:
>>>>
>>>> Erik Faye-Lund <kusmabite@gmail.com> writes:
>>>>
>>>>> Or you could just restart your shell when you disconnect...
>>>>
>>>> Well I'm not that daft.  I tried that and if it had resolved my problem
>>>> I wouldn't have posted.
>>>
>>> Hm, but isn't that what Karsten explains in his last paragraph? What
>>> shell are you running msys or cmd?
>>
>> Our /etc/profile does this:
>>
>> https://github.com/msysgit/msysgit/blob/master/etc/profile#L38
>>
>> ...however, our git-wrapper only does this:
>>
>> https://github.com/msysgit/msysgit/blob/master/src/git-wrapper/git-wrapper.c#L71
>>
>> So yeah, we don't seem to actually check if %HOMEDRIVE%%HOMEPATH%
>> exists. Perhaps fixing this is the right thing to do then? Since the
>> git-wrapper is run for *every* invokation of git, you wouldn't even
>> have to restart the shell in this case.
>
> But again, restarting the shell doesn't fix the problem.
>
Not for cmd, no. But for Git Bash, it should.

← back to recent threads