diff options
author | Anders Melchiorsen <mail@cup.kalibalik.dk> | 2008-08-04 02:30:03 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2008-08-03 17:55:40 -0700 |
commit | 2c3766f06adf0ba226a592939971f8ef587e54c1 (patch) | |
tree | 4a381796e1d81fdaf052e1213232412c6692aae3 | |
parent | 22537765f51de92115592ac0a15981b8d27ef908 (diff) | |
download | git-2c3766f06adf0ba226a592939971f8ef587e54c1.tar.gz git-2c3766f06adf0ba226a592939971f8ef587e54c1.tar.xz |
Flush output in start_async
This prevents double output in case stdout is redirected.
Signed-off-by: Anders Melchiorsen <mail@cup.kalibalik.dk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | run-command.c | 3 | ||||
-rwxr-xr-x | t/t5601-clone.sh | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/run-command.c b/run-command.c index a3b28a64d..6af83c526 100644 --- a/run-command.c +++ b/run-command.c @@ -304,6 +304,9 @@ int start_async(struct async *async) async->out = pipe_out[0]; #ifndef __MINGW32__ + /* Flush stdio before fork() to avoid cloning buffers */ + fflush(NULL); + async->pid = fork(); if (async->pid < 0) { error("fork (async) failed: %s", strerror(errno)); diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index 57173b4c5..a13b6f9d3 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -31,6 +31,12 @@ test_expect_success 'clone with excess parameters (2)' ' ' +test_expect_success 'output from clone' ' + rm -fr dst && + git clone -n "file://$(pwd)/src" dst >output && + test $(grep Initialized output | wc -l) = 1 +' + test_expect_success 'clone does not keep pack' ' rm -fr dst && |