]> git.ipfire.org Git - thirdparty/git.git/commit - compat/mingw.c
mingw: add experimental feature to redirect standard handles
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Wed, 1 Nov 2017 17:10:25 +0000 (18:10 +0100)
committerJunio C Hamano <gitster@pobox.com>
Thu, 2 Nov 2017 02:19:41 +0000 (11:19 +0900)
commit3f944424ac899fb6705e7463d937c5ed581da207
treedff5b2ff2f2a913a3c430e95d3ae93ba9cdd502b
parentcb5918aa0d50f50e83787f65c2ddc3dcb10159fe
mingw: add experimental feature to redirect standard handles

Particularly when calling Git from applications, such as Visual Studio's
Team Explorer, 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.

Let's introduce a set of environment variables (GIT_REDIRECT_STDIN and
friends) that specify paths to files, or even better, named pipes (which
are similar to Unix sockets) and that are used by the spawned Git
process.  This helps work around above-mentioned issue: those named
pipes will be opened in a non-inheritable way upon startup, and no
handles are passed around (and therefore no inherited handles need to be
closed by any spawned child).

This feature shipped with Git for Windows (marked as experimental) since
v2.11.0(2), so it has seen some serious testing in the meantime.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/mingw.c
t/t0001-init.sh