Re: [PATCH 0/3] mingw: introduce a way to avoid std handle inheritance
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Oct 31, 2017, 17:12 UTC
- Message-ID
- <alpine.DEB.2.21.1.1710311809570.6482@virtualbox>
- In-Reply-To
- <20171030205522.hur26cumwusk7wwa@aiede.mtv.corp.google.com>
Hi Jonathan,
On Mon, 30 Oct 2017, Jonathan Nieder wrote:
Show 20 quoted lines
> Johannes Schindelin wrote: > > > Particularly when calling Git from applications, such as Visual Studio, > > it is important that stdin/stdout/stderr are closed properly. However, > > when spawning processes on Windows, those handles must be marked as > > inheritable if we want to use them, but that flag is a global flag and > > may very well be used by other spawned processes which then do not know > > to close those handles. > > > > As a workaround, introduce handling for the environment variables > > GIT_REDIRECT_STD* to read/write from/to named pipes instead > > (conceptually similar to Unix sockets, for you Linux folks). These do > > not need to be marked as inheritable, as the process can simply open the > > named pipe. No global flags. No problems. > > > > This feature was introduced as an experimental feature into Git for > > Windows v2.11.0(2) and has been tested ever since. I feel it is > > well-tested enough that it can be integrated into core Git. > > Can this rationale go in the commit messages?
I thought I had done exactly that in 1/3...
> Actually I wouldn't mind if this were all a single patch, with such a > rationale in the commit message.
Quite honestly, I'd rather not. There is a logical structure to the three patches (and I left a Duck in 3/3, to see who bothers to actually read what I wrote).
The redirection, for example, is a very special thing that I would like to keep in a separate commit, for clarity.
> The patches' concept seems sane. I haven't looked closely at the > implementation.
Thanks, Dscho