From 69974bd1686fd973b53492f0cc0847294ce4a992 Mon Sep 17 00:00:00 2001 From: Todd Zullinger Date: Fri, 5 Aug 2011 16:28:48 -0400 Subject: [PATCH] Fix git push --quiet, thanks to Clemens Buchacher (#725593) --- ...gate-quiet-to-send-pack-receive-pack.patch | 201 ++++++++++++++++++ git.spec | 8 +- 2 files changed, 208 insertions(+), 1 deletion(-) create mode 100644 0001-propagate-quiet-to-send-pack-receive-pack.patch diff --git a/0001-propagate-quiet-to-send-pack-receive-pack.patch b/0001-propagate-quiet-to-send-pack-receive-pack.patch new file mode 100644 index 0000000..59f8879 --- /dev/null +++ b/0001-propagate-quiet-to-send-pack-receive-pack.patch @@ -0,0 +1,201 @@ +From c513fc653a2f88fd29e30ffcdd8aaf7741222cc7 Mon Sep 17 00:00:00 2001 +From: Clemens Buchacher +Date: Sat, 30 Jul 2011 10:35:24 -0400 +Subject: [PATCH] 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 +--- + Documentation/git-receive-pack.txt | 5 ++++- + Documentation/git-send-pack.txt | 5 ++++- + builtin/receive-pack.c | 12 ++++++++++-- + builtin/send-pack.c | 11 ++++++++++- + remote-curl.c | 4 +++- + transport.c | 10 +++++++--- + 6 files changed, 38 insertions(+), 9 deletions(-) + +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 b5be25c..1da0ff4 100644 +--- a/remote-curl.c ++++ b/remote-curl.c +@@ -764,7 +764,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; + } +-- +1.7.6.rc1 + diff --git a/git.spec b/git.spec index 7eabe22..50a181d 100644 --- a/git.spec +++ b/git.spec @@ -69,7 +69,7 @@ Name: git Version: 1.7.6 -Release: 4%{?dist} +Release: 5%{?dist} Summary: Fast Version Control System License: GPLv2 Group: Development/Tools @@ -87,6 +87,8 @@ Patch1: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch Patch2: git-1.6-update-contrib-hooks-path.patch # https://bugzilla.redhat.com/600411 Patch3: git-1.7-el5-emacs-support.patch +# https://bugzilla.redhat.com/725593 +Patch4: 0001-propagate-quiet-to-send-pack-receive-pack.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: desktop-file-utils @@ -288,6 +290,7 @@ Requires: emacs-git = %{version}-%{release} %if %{emacs_old} %patch3 -p1 %endif +%patch4 -p1 # Use these same options for every invocation of 'make'. # Otherwise it will rebuild in %%install due to flags changes. @@ -522,6 +525,9 @@ rm -rf %{buildroot} # No files for you! %changelog +* Fri Aug 05 2011 Todd Zullinger - 1.7.6-5 +- Fix git push --quiet, thanks to Clemens Buchacher (#725593) + * Tue Jul 26 2011 Todd Zullinger - 1.7.6-4 - Drop git-arch on fedora >= 16, the tla package has been retired - Rework most spec file dist conditionals to make future changes easier