Hi Jonathan, On Mon, 30 Oct 2017, Jonathan Nieder wrote: > 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