summaryrefslogtreecommitdiff
path: root/receive-pack.c
diff options
context:
space:
mode:
authorShawn O. Pearce <spearce@spearce.org>2006-12-30 21:55:19 -0500
committerJunio C Hamano <junkio@cox.net>2006-12-30 22:22:14 -0800
commitcd83c74cb3161a19b5efd33f40cfe378c2f64ddb (patch)
tree9d6d657ce34aae3f155d402d4bfaab34a4fcb537 /receive-pack.c
parent9b0b50936ec76ad8e582d18d5bf54bc81c685e9b (diff)
downloadgit-cd83c74cb3161a19b5efd33f40cfe378c2f64ddb.tar.gz
Redirect update hook stdout to stderr.
If an update hook outputs to stdout then that output will be sent back over the wire to the push client as though it were part of the git protocol. This tends to cause protocol errors on the client end of the connection, as the hook output is not expected in that context. Most hook developers work around this by making sure their hook outputs everything to stderr. But hooks shouldn't need to perform such special behavior. Instead we can just dup stderr to stdout prior to invoking the update hook. Signed-off-by: Shawn O. Pearce <spearce@spearce.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'receive-pack.c')
-rw-r--r--receive-pack.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/receive-pack.c b/receive-pack.c
index 2b0ba638af..48e49465ba 100644
--- a/receive-pack.c
+++ b/receive-pack.c
@@ -73,7 +73,8 @@ static int run_update_hook(const char *refname,
if (access(update_hook, X_OK) < 0)
return 0;
- code = run_command(update_hook, refname, old_hex, new_hex, NULL);
+ code = run_command_opt(RUN_COMMAND_STDOUT_TO_STDERR,
+ update_hook, refname, old_hex, new_hex, NULL);
switch (code) {
case 0:
return 0;