From 90a6c7d443058e8ad3eb36d21f4ede99addbca61 Mon Sep 17 00:00:00 2001 From: Clemens Buchacher Date: Sat, 30 Jul 2011 14:10:14 +0200 Subject: propagate --quiet to send-pack/receive-pack Currently, git push --quiet produces some non-error output, e.g.: $ git push --quiet Unpacking objects: 100% (3/3), done. Add the --quiet option to send-pack/receive-pack and pass it to unpack-objects in the receive-pack codepath and to receive-pack in the push codepath. This fixes a bug reported for the fedora git package: https://bugzilla.redhat.com/show_bug.cgi?id=725593 Reported-by: Jesse Keating Cc: Todd Zullinger Signed-off-by: Clemens Buchacher Signed-off-by: Junio C Hamano diff --git a/Documentation/git-receive-pack.txt b/Documentation/git-receive-pack.txt index f34e0ae..23f9a48 100644 --- a/Documentation/git-receive-pack.txt +++ b/Documentation/git-receive-pack.txt @@ -8,7 +8,7 @@ git-receive-pack - Receive what is pushed into the repository SYNOPSIS -------- -'git-receive-pack' +'git-receive-pack' [--quiet] DESCRIPTION ----------- @@ -34,6 +34,9 @@ are not fast-forwards. OPTIONS ------- +--quiet:: + Print only error messages. + :: The repository to sync into. diff --git a/Documentation/git-send-pack.txt b/Documentation/git-send-pack.txt index 17f8f55..67bcd0c 100644 --- a/Documentation/git-send-pack.txt +++ b/Documentation/git-send-pack.txt @@ -8,7 +8,7 @@ git-send-pack - Push objects over git protocol to another repository SYNOPSIS -------- -'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=] [--verbose] [--thin] [:] [...] +'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=] [--quiet] [--verbose] [--thin] [:] [...] DESCRIPTION ----------- @@ -44,6 +44,9 @@ OPTIONS the remote repository can lose commits; use it with care. +--quiet:: + Print only error messages. + --verbose:: Run verbosely. diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index e1a687a..fca26fb 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -636,7 +636,7 @@ static const char *parse_pack_header(struct pack_header *hdr) static const char *pack_lockfile; -static const char *unpack(void) +static const char *unpack(int quiet) { struct pack_header hdr; const char *hdr_err; @@ -653,6 +653,8 @@ static const char *unpack(void) int code, i = 0; const char *unpacker[4]; unpacker[i++] = "unpack-objects"; + if (quiet) + unpacker[i++] = "-q"; if (receive_fsck_objects) unpacker[i++] = "--strict"; unpacker[i++] = hdr_arg; @@ -753,6 +755,7 @@ static void add_alternate_refs(void) int cmd_receive_pack(int argc, const char **argv, const char *prefix) { + int quiet = 0; int advertise_refs = 0; int stateless_rpc = 0; int i; @@ -766,6 +769,11 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) const char *arg = *argv++; if (*arg == '-') { + if (!strcmp(arg, "--quiet")) { + quiet = 1; + continue; + } + if (!strcmp(arg, "--advertise-refs")) { advertise_refs = 1; continue; @@ -814,7 +822,7 @@ int cmd_receive_pack(int argc, const char **argv, const char *prefix) const char *unpack_status = NULL; if (!delete_only(commands)) - unpack_status = unpack(); + unpack_status = unpack(quiet); execute_commands(commands, unpack_status); if (pack_lockfile) unlink_or_warn(pack_lockfile); diff --git a/builtin/send-pack.c b/builtin/send-pack.c index c1f6ddd..40a1675 100644 --- a/builtin/send-pack.c +++ b/builtin/send-pack.c @@ -439,6 +439,10 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) args.force_update = 1; continue; } + if (!strcmp(arg, "--quiet")) { + args.quiet = 1; + continue; + } if (!strcmp(arg, "--verbose")) { args.verbose = 1; continue; @@ -488,8 +492,13 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix) fd[0] = 0; fd[1] = 1; } else { - conn = git_connect(fd, dest, receivepack, + struct strbuf sb = STRBUF_INIT; + strbuf_addstr(&sb, receivepack); + if (args.quiet) + strbuf_addstr(&sb, " --quiet"); + conn = git_connect(fd, dest, sb.buf, args.verbose ? CONNECT_VERBOSE : 0); + strbuf_release(&sb); } memset(&extra_have, 0, sizeof(extra_have)); diff --git a/remote-curl.c b/remote-curl.c index 8ac5028..0393ab9 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -766,7 +766,9 @@ static int push_git(struct discovery *heads, int nr_spec, char **specs) argv[argc++] = "--thin"; if (options.dry_run) argv[argc++] = "--dry-run"; - if (options.verbosity > 1) + if (options.verbosity < 0) + argv[argc++] = "--quiet"; + else if (options.verbosity > 1) argv[argc++] = "--verbose"; argv[argc++] = url; for (i = 0; i < nr_spec; i++) diff --git a/transport.c b/transport.c index c9c8056..98c5778 100644 --- a/transport.c +++ b/transport.c @@ -482,14 +482,18 @@ static int set_git_option(struct git_transport_options *opts, static int connect_setup(struct transport *transport, int for_push, int verbose) { struct git_transport_data *data = transport->data; + struct strbuf sb = STRBUF_INIT; if (data->conn) return 0; - data->conn = git_connect(data->fd, transport->url, - for_push ? data->options.receivepack : - data->options.uploadpack, + strbuf_addstr(&sb, for_push ? data->options.receivepack : + data->options.uploadpack); + if (for_push && transport->verbose < 0) + strbuf_addstr(&sb, " --quiet"); + data->conn = git_connect(data->fd, transport->url, sb.buf, verbose ? CONNECT_VERBOSE : 0); + strbuf_release(&sb); return 0; } -- cgit v0.10.2-6-g49f6 From 0d086b8e33820d7cf87386a912e2939c59822f35 Mon Sep 17 00:00:00 2001 From: Junio C Hamano Date: Mon, 8 Aug 2011 12:31:01 -0700 Subject: receive-pack: do not overstep command line argument array Previous commit added one element to the command line, without making sure the result fits there. Signed-off-by: Junio C Hamano diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c index fca26fb..0d51bfb 100644 --- a/builtin/receive-pack.c +++ b/builtin/receive-pack.c @@ -651,7 +651,7 @@ static const char *unpack(int quiet) if (ntohl(hdr.hdr_entries) < unpack_limit) { int code, i = 0; - const char *unpacker[4]; + const char *unpacker[5]; unpacker[i++] = "unpack-objects"; if (quiet) unpacker[i++] = "-q"; -- cgit v0.10.2-6-g49f6