Hi Corinna, On Wed, 21 Oct 2015, Corinna Vinschen wrote:
> On Sep 16 15:06, Johannes Schindelin wrote: > > * uinfo.cc (cygheap_pwdgrp::get_home): Offer an option in > > nsswitch.conf that let's the environment variable HOME (or > > HOMEDRIVE & HOMEPATH, or USERPROFILE) define the home > > directory. > > > > * ntsec.xml: Document the `env` schema. > > > > Detailed comments: > > > > In the context of Git for Windows, it is a well-established technique > > to let the `$HOME` variable define where the current user's home > > directory is, falling back to `$HOMEDRIVE$HOMEPATH` and `$USERPROFILE`. > > > > The idea is that we want to share user-specific settings between > > programs, whether they be Cygwin, MSys2 or not. Unfortunately, we > > cannot blindly activate the "db_home: windows" setting because in some > > setups, the user's home directory is set to a hidden directory via an > > UNC path (\\share\some\hidden\folder$) -- something many programs > > cannot handle correctly. > > -v, please. Which applications can't handle that? Why do we have to > care? Oh, the first one that comes to mind is `cmd.exe`. You cannot start `cmd.exe` with a UNC working directory without getting complaints. > > The established technique is to allow setting the user's home directory > > via the environment variables mentioned above. This has the additional > > advantage that it is much faster than querying the Windows user database. > > But it's wrong. We discussed this a couple of times on the Cygwin ML. > The underlying functionality generically implements the passwd entries. > Your "env" setting will return the same $HOME setting in the pw_dir > field for every user account. No, it will not, because most users are not administrators. So they can only set environment variables for themselves. In most cases, `HOME` will not even be defined, but `HOMEDRIVE` and `HOMEPATH` will, and they will be correct. > All user accounts will have the same home dir as your current user. And > the value is unreliable, too. If another user logs in, all accounts > will have another $HOME, the one from the now logged in user. This is > so wrong and potentially dangerous that I don't think this belongs into > Cygwin, sorry. I ask you to reconsider. I am not trying to make this the default. And I *need* a way to heed the `HOME` variable set by the user. For backwards-compatibility with Git for Windows 1.x, where users frequently adjusted the `HOME` variable to fix problems with MSys not handling their home directory properly. The patch itself is so simple that it cannot possibly cause a maintenance burden, and by offering this feature as opt-in, users who are in need of that feature can easily use it -- in Cygwin, MSys2, and yes, in Git for Windows. It would bring a major benefit to us. Ciao, Johannes
