{"thread":{"id":"20297","subject":"[PATCH] push: add -q option","startedAt":"2009-07-30T15:10:39Z","lastAt":"2009-07-30T15:10:39Z","messageCount":1,"participants":["Michal Marek"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"119172","messageId":"1248966639-14393-1-git-send-email-mmarek@suse.cz","threadId":"20297","inReplyTo":null,"subject":"[PATCH] push: add -q option","fromName":"Michal Marek","fromEmail":"mmarek@suse.cz","sentAt":"2009-07-30T15:10:39Z","receivedAt":"2009-07-30T15:10:39Z","isPatch":true,"sender":{"key":"mmarek@suse.cz","avatar":"https://gravatar.com/avatar/b026025af60a27d7ea0635833f351de6b0a6089a9573415d86c9352eda4f6e9a?d=mp&s=160"},"body":"Implement git pull -q analogously to git fetch -q, i.e. pass it down to\nsend-pack and pack-objects. Also do not print the status message after\na successful push has completed.\n\nSigned-off-by: Michal Marek <mmarek@suse.cz>\n---\n Documentation/git-push.txt |    5 +++++\n builtin-push.c             |   14 ++++++++++----\n builtin-send-pack.c        |   15 ++++++++++++---\n send-pack.h                |    1 +\n transport.c                |   23 ++++++++++++++---------\n transport.h                |    1 -\n 6 files changed, 42 insertions(+), 17 deletions(-)\n\ndiff --git a/Documentation/git-push.txt b/Documentation/git-push.txt\nindex 2653388..9957328 100644\n--- a/Documentation/git-push.txt\n+++ b/Documentation/git-push.txt\n@@ -133,6 +133,11 @@ useful if you write an alias or script around 'git-push'.\n \ttransfer spends extra cycles to minimize the number of\n \tobjects to be sent and meant to be used on slower connection.\n \n+-q::\n+--quiet::\n+\tPass --quiet to git-send-pack and do not print the status message\n+\tafter a sucessfull push.\n+\n -v::\n --verbose::\n \tRun verbosely.\ndiff --git a/builtin-push.c b/builtin-push.c\nindex 1d92e22..08e9e69 100644\n--- a/builtin-push.c\n+++ b/builtin-push.c\n@@ -88,7 +88,7 @@ static void setup_default_push_refspecs(void)\n \t}\n }\n \n-static int do_push(const char *repo, int flags)\n+static int do_push(const char *repo, int flags, int verbosity)\n {\n \tint i, errs;\n \tstruct remote *remote = remote_get(repo);\n@@ -140,13 +140,18 @@ static int do_push(const char *repo, int flags)\n \t\tstruct transport *transport =\n \t\t\ttransport_get(remote, url[i]);\n \t\tint err;\n+\n+\t\tif (verbosity > 0)\n+\t\t\ttransport->verbose = 1;\n+\t\tif (verbosity < 0)\n+\t\t\ttransport->verbose = -1;\n \t\tif (receivepack)\n \t\t\ttransport_set_option(transport,\n \t\t\t\t\t     TRANS_OPT_RECEIVEPACK, receivepack);\n \t\tif (thin)\n \t\t\ttransport_set_option(transport, TRANS_OPT_THIN, \"yes\");\n \n-\t\tif (flags & TRANSPORT_PUSH_VERBOSE)\n+\t\tif (verbosity > 0)\n \t\t\tfprintf(stderr, \"Pushing to %s\\n\", url[i]);\n \t\terr = transport_push(transport, refspec_nr, refspec, flags);\n \t\terr |= transport_disconnect(transport);\n@@ -163,12 +168,13 @@ static int do_push(const char *repo, int flags)\n int cmd_push(int argc, const char **argv, const char *prefix)\n {\n \tint flags = 0;\n+\tint verbosity = 0;\n \tint tags = 0;\n \tint rc;\n \tconst char *repo = NULL;\t/* default repository */\n \n \tstruct option options[] = {\n-\t\tOPT_BIT('v', \"verbose\", &flags, \"be verbose\", TRANSPORT_PUSH_VERBOSE),\n+\t\tOPT__VERBOSITY(&verbosity),\n \t\tOPT_STRING( 0 , \"repo\", &repo, \"repository\", \"repository\"),\n \t\tOPT_BIT( 0 , \"all\", &flags, \"push all refs\", TRANSPORT_PUSH_ALL),\n \t\tOPT_BIT( 0 , \"mirror\", &flags, \"mirror all refs\",\n@@ -193,7 +199,7 @@ int cmd_push(int argc, const char **argv, const char *prefix)\n \t\tset_refspecs(argv + 1, argc - 1);\n \t}\n \n-\trc = do_push(repo, flags);\n+\trc = do_push(repo, flags, verbosity);\n \tif (rc == -1)\n \t\tusage_with_options(push_usage, options);\n \telse\ndiff --git a/builtin-send-pack.c b/builtin-send-pack.c\nindex 47fb9f7..6815968 100644\n--- a/builtin-send-pack.c\n+++ b/builtin-send-pack.c\n@@ -44,6 +44,7 @@ static int pack_objects(int fd, struct ref *refs, struct extra_have_objects *ext\n \t\tNULL,\n \t\tNULL,\n \t\tNULL,\n+\t\tNULL,\n \t};\n \tstruct child_process po;\n \tint i;\n@@ -53,6 +54,8 @@ static int pack_objects(int fd, struct ref *refs, struct extra_have_objects *ext\n \t\targv[i++] = \"--thin\";\n \tif (args->use_ofs_delta)\n \t\targv[i++] = \"--delta-base-offset\";\n+\tif (args->quiet)\n+\t\targv[i++] = \"-q\";\n \tmemset(&po, 0, sizeof(po));\n \tpo.argv = argv;\n \tpo.in = -1;\n@@ -274,9 +277,11 @@ static void print_push_status(const char *dest, struct ref *refs)\n \t\t\t\tn += print_one_push_status(ref, dest, n);\n \t}\n \n-\tfor (ref = refs; ref; ref = ref->next)\n-\t\tif (ref->status == REF_STATUS_OK)\n-\t\t\tn += print_one_push_status(ref, dest, n);\n+\tif (!args.quiet) {\n+\t\tfor (ref = refs; ref; ref = ref->next)\n+\t\t\tif (ref->status == REF_STATUS_OK)\n+\t\t\t\tn += print_one_push_status(ref, dest, n);\n+\t}\n \n \tfor (ref = refs; ref; ref = ref->next) {\n \t\tif (ref->status != REF_STATUS_NONE &&\n@@ -516,6 +521,10 @@ int cmd_send_pack(int argc, const char **argv, const char *prefix)\n \t\t\t\targs.verbose = 1;\n \t\t\t\tcontinue;\n \t\t\t}\n+\t\t\tif (!strcmp(arg, \"--quiet\")) {\n+\t\t\t\targs.quiet = 1;\n+\t\t\t\tcontinue;\n+\t\t\t}\n \t\t\tif (!strcmp(arg, \"--thin\")) {\n \t\t\t\targs.use_thin_pack = 1;\n \t\t\t\tcontinue;\ndiff --git a/send-pack.h b/send-pack.h\nindex 1d7b1b3..8b3cf02 100644\n--- a/send-pack.h\n+++ b/send-pack.h\n@@ -3,6 +3,7 @@\n \n struct send_pack_args {\n \tunsigned verbose:1,\n+\t\tquiet:1,\n \t\tsend_mirror:1,\n \t\tforce_update:1,\n \t\tuse_thin_pack:1,\ndiff --git a/transport.c b/transport.c\nindex de0d587..f63c8ef 100644\n--- a/transport.c\n+++ b/transport.c\n@@ -410,7 +410,7 @@ static int curl_transport_push(struct transport *transport, int refspec_nr, cons\n \t\targv[argc++] = \"--force\";\n \tif (flags & TRANSPORT_PUSH_DRY_RUN)\n \t\targv[argc++] = \"--dry-run\";\n-\tif (flags & TRANSPORT_PUSH_VERBOSE)\n+\tif (transport->verbose > 0)\n \t\targv[argc++] = \"--verbose\";\n \targv[argc++] = transport->url;\n \twhile (refspec_nr--)\n@@ -825,15 +825,17 @@ static void print_push_status(const char *dest, struct ref *refs,\n \tstruct ref *ref;\n \tint n = 0;\n \n-\tif (verbose) {\n+\tif (verbose > 0 || porcelain) {\n \t\tfor (ref = refs; ref; ref = ref->next)\n \t\t\tif (ref->status == REF_STATUS_UPTODATE)\n \t\t\t\tn += print_one_push_status(ref, dest, n, porcelain);\n \t}\n \n-\tfor (ref = refs; ref; ref = ref->next)\n-\t\tif (ref->status == REF_STATUS_OK)\n-\t\t\tn += print_one_push_status(ref, dest, n, porcelain);\n+\tif (verbose >= 0 || porcelain) {\n+\t\tfor (ref = refs; ref; ref = ref->next)\n+\t\t\tif (ref->status == REF_STATUS_OK)\n+\t\t\t\tn += print_one_push_status(ref, dest, n, porcelain);\n+\t}\n \n \tfor (ref = refs; ref; ref = ref->next) {\n \t\tif (ref->status != REF_STATUS_NONE &&\n@@ -888,10 +890,12 @@ static int git_transport_push(struct transport *transport, struct ref *remote_re\n \t\t\t\t NULL);\n \t}\n \n+\tmemset(&args, 0, sizeof(args));\n \targs.send_mirror = !!(flags & TRANSPORT_PUSH_MIRROR);\n \targs.force_update = !!(flags & TRANSPORT_PUSH_FORCE);\n \targs.use_thin_pack = data->thin;\n-\targs.verbose = !!(flags & TRANSPORT_PUSH_VERBOSE);\n+\targs.verbose = (transport->verbose > 0);\n+\targs.quiet = (transport->verbose < 0);\n \targs.dry_run = !!(flags & TRANSPORT_PUSH_DRY_RUN);\n \n \tret = send_pack(&args, data->fd, data->conn, remote_refs,\n@@ -1008,7 +1012,6 @@ int transport_push(struct transport *transport,\n \t\t\ttransport->get_refs_list(transport, 1);\n \t\tstruct ref *local_refs = get_local_heads();\n \t\tint match_flags = MATCH_REFS_NONE;\n-\t\tint verbose = flags & TRANSPORT_PUSH_VERBOSE;\n \t\tint porcelain = flags & TRANSPORT_PUSH_PORCELAIN;\n \t\tint ret;\n \n@@ -1024,12 +1027,14 @@ int transport_push(struct transport *transport,\n \n \t\tret = transport->push_refs(transport, remote_refs, flags);\n \n-\t\tprint_push_status(transport->url, remote_refs, verbose | porcelain, porcelain);\n+\t\tprint_push_status(transport->url, remote_refs,\n+\t\t\t\ttransport->verbose, porcelain);\n \n \t\tif (!(flags & TRANSPORT_PUSH_DRY_RUN)) {\n \t\t\tstruct ref *ref;\n \t\t\tfor (ref = remote_refs; ref; ref = ref->next)\n-\t\t\t\tupdate_tracking_ref(transport->remote, ref, verbose);\n+\t\t\t\tupdate_tracking_ref(transport->remote, ref,\n+\t\t\t\t\t\ttransport->verbose > 0);\n \t\t}\n \n \t\tif (!ret && !refs_pushed(remote_refs))\ndiff --git a/transport.h b/transport.h\nindex 51b5397..de3e541 100644\n--- a/transport.h\n+++ b/transport.h\n@@ -34,7 +34,6 @@ struct transport {\n #define TRANSPORT_PUSH_FORCE 2\n #define TRANSPORT_PUSH_DRY_RUN 4\n #define TRANSPORT_PUSH_MIRROR 8\n-#define TRANSPORT_PUSH_VERBOSE 16\n #define TRANSPORT_PUSH_PORCELAIN 32\n \n /* Returns a transport suitable for the url */\n-- \n1.6.4.14.g85346\n"}]}