summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@lfos.de>2016-06-05 11:36:38 +0200
committerJunio C Hamano <gitster@pobox.com>2016-06-06 10:58:55 -0700
commit860a2ebecd26563e6ac0f89c90052b41a17d1703 (patch)
tree76f73bcbe3d28abbc81026803389624df53fd345
parent4b0891ffe4ec3aef081cf48c5f9a747586076f7a (diff)
downloadgit-lf/receive-pack-auto-gc-to-client.tar.gz
receive-pack: send auto-gc output over sideband 2lf/receive-pack-auto-gc-to-client
Redirect auto-gc output to the sideband such that it is visible to all clients. As a side effect, all auto-gc error messages are now prefixed with "remote: " before being printed to stderr on the client-side which makes it easier to understand that those error messages originate from the server. Signed-off-by: Lukas Fleischer <lfleischer@lfos.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--builtin/receive-pack.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c
index c8e32b297c..4abfa38a12 100644
--- a/builtin/receive-pack.c
+++ b/builtin/receive-pack.c
@@ -1788,9 +1788,20 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix)
const char *argv_gc_auto[] = {
"gc", "--auto", "--quiet", NULL,
};
- int opt = RUN_GIT_CMD | RUN_COMMAND_STDOUT_TO_STDERR;
+ struct child_process proc = CHILD_PROCESS_INIT;
+
+ proc.no_stdin = 1;
+ proc.stdout_to_stderr = 1;
+ proc.err = use_sideband ? -1 : 0;
+ proc.git_cmd = 1;
+ proc.argv = argv_gc_auto;
+
close_all_packs();
- run_command_v_opt(argv_gc_auto, opt);
+ if (!start_command(&proc)) {
+ if (use_sideband)
+ copy_to_sideband(proc.err, -1, NULL);
+ finish_command(&proc);
+ }
}
if (auto_update_server_info)
update_server_info(0);