aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnders Melchiorsen <mail@cup.kalibalik.dk>2008-08-04 02:30:03 +0200
committerJunio C Hamano <gitster@pobox.com>2008-08-03 17:55:40 -0700
commit2c3766f06adf0ba226a592939971f8ef587e54c1 (patch)
tree4a381796e1d81fdaf052e1213232412c6692aae3
parent22537765f51de92115592ac0a15981b8d27ef908 (diff)
downloadgit-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.c3
-rwxr-xr-xt/t5601-clone.sh6
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 &&