Merge branch 'cb/maint-quiet-push'
authorJunio C Hamano <gitster@pobox.com>
Thu, 18 Aug 2011 00:26:05 +0000 (17:26 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 18 Aug 2011 00:26:05 +0000 (17:26 -0700)
* cb/maint-quiet-push:
receive-pack: do not overstep command line argument array
propagate --quiet to send-pack/receive-pack

Conflicts:
Documentation/git-receive-pack.txt
Documentation/git-send-pack.txt

Documentation/git-receive-pack.txt
Documentation/git-send-pack.txt
builtin/receive-pack.c
builtin/send-pack.c
remote-curl.c
transport.c
index 459c08598f31fccf1b5db31f2f1cd9680654b389..d7b68afbc208c0bd067b4073cff75644888b5ea9 100644 (file)
@@ -9,7 +9,7 @@ git-receive-pack - Receive what is pushed into the repository
 SYNOPSIS
 --------
 [verse]
-'git-receive-pack' <directory>
+'git-receive-pack' [--quiet] <directory>
 
 DESCRIPTION
 -----------
@@ -35,6 +35,9 @@ are not fast-forwards.
 
 OPTIONS
 -------
+--quiet::
+       Print only error messages.
+
 <directory>::
        The repository to sync into.
 
index bd3eaa69bfb6e788d297b3e7d2c871d25a478f80..bed9e1f097d3aa144a62765129bf3b599d365dcf 100644 (file)
@@ -9,7 +9,7 @@ git-send-pack - Push objects over git protocol to another repository
 SYNOPSIS
 --------
 [verse]
-'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--verbose] [--thin] [<host>:]<directory> [<ref>...]
+'git send-pack' [--all] [--dry-run] [--force] [--receive-pack=<git-receive-pack>] [--quiet] [--verbose] [--thin] [<host>:]<directory> [<ref>...]
 
 DESCRIPTION
 -----------
@@ -45,6 +45,9 @@ OPTIONS
        the remote repository can lose commits; use it with
        care.
 
+--quiet::
+       Print only error messages.
+
 --verbose::
        Run verbosely.
 
index e1a687ad0761e46f6ec95659bb585b9014d4abf4..0d51bfb79eb3e8b234ca4ee98844de20d46503b6 100644 (file)
@@ -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;
@@ -651,8 +651,10 @@ static const char *unpack(void)
 
        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";
                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);
index c1f6ddd927d61fbc2558ee3624224af405d918c3..40a1675997cee19afb77b94bdd514fb5bc9a27bc 100644 (file)
@@ -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));
index b8cf45a7dd439b83c80bcf7a397e1b8e34c70f67..5798aa57b6bf7f47f4fd9c8b943602faaeee4b95 100644 (file)
@@ -762,7 +762,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++)
index c9c8056f9de69bd378cd271d70363b5560f13e07..98c577804f177b1c6f9df0e34e5fc3a656a81d27 100644 (file)
@@ -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;
 }