{"thread":{"id":"10661","subject":"[PATCH] Use parseopts in builtin-push","startedAt":"2007-11-05T03:35:37Z","lastAt":"2007-11-05T21:50:05Z","messageCount":2,"participants":["Daniel Barkalow","Junio C Hamano"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"58343","messageId":"Pine.LNX.4.64.0711042235350.7357@iabervon.org","threadId":"10661","inReplyTo":null,"subject":"[PATCH] Use parseopts in builtin-push","fromName":"Daniel Barkalow","fromEmail":"barkalow@iabervon.org","sentAt":"2007-11-05T03:35:37Z","receivedAt":"2007-11-05T03:35:37Z","isPatch":true,"sender":{"key":"barkalow@iabervon.org","avatar":"https://avatars.githubusercontent.com/u/55364219?v=4"},"body":"Signed-off-by: Daniel Barkalow <barkalow@iabervon.org>\n---\n builtin-push.c |   88 +++++++++++++++++++++++---------------------------------\n 1 files changed, 36 insertions(+), 52 deletions(-)\n\ndiff --git a/builtin-push.c b/builtin-push.c\nindex 4b39ef3..2c56195 100644\n--- a/builtin-push.c\n+++ b/builtin-push.c\n@@ -7,8 +7,12 @@\n #include \"builtin.h\"\n #include \"remote.h\"\n #include \"transport.h\"\n+#include \"parse-options.h\"\n \n-static const char push_usage[] = \"git-push [--all] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]\";\n+static const char * const push_usage[] = {\n+\t\"git-push [--all] [--dry-run] [--tags] [--receive-pack=<git-receive-pack>] [--repo=all] [-f | --force] [-v] [<repository> <refspec>...]\",\n+\tNULL,\n+};\n \n static int thin, verbose;\n static const char *receivepack;\n@@ -85,63 +89,43 @@ static int do_push(const char *repo, int flags)\n \n int cmd_push(int argc, const char **argv, const char *prefix)\n {\n-\tint i;\n \tint flags = 0;\n+\tint all = 0;\n+\tint dry_run = 0;\n+\tint force = 0;\n+\tint tags = 0;\n \tconst char *repo = NULL;\t/* default repository */\n \n-\tfor (i = 1; i < argc; i++) {\n-\t\tconst char *arg = argv[i];\n+\tstruct option options[] = {\n+\t\tOPT__VERBOSE(&verbose),\n+\t\tOPT_STRING( 0 , \"repo\", &repo, \"repository\", \"repository\"),\n+\t\tOPT_BOOLEAN( 0 , \"all\", &all, \"push all refs\"),\n+\t\tOPT_BOOLEAN( 0 , \"tags\", &tags, \"push tags\"),\n+\t\tOPT_BOOLEAN( 0 , \"dry-run\", &dry_run, \"dry run\"),\n+\t\tOPT_BOOLEAN('f', \"force\", &force, \"force updates\"),\n+\t\tOPT_BOOLEAN( 0 , \"thin\", &thin, \"use thin pack\"),\n+\t\tOPT_STRING( 0 , \"receive-pack\", &receivepack, \"receive-pack\", \"receive pack program\"),\n+\t\tOPT_STRING( 0 , \"exec\", &receivepack, \"receive-pack\", \"receive pack program\"),\n+\t\tOPT_END()\n+\t};\n \n-\t\tif (arg[0] != '-') {\n-\t\t\trepo = arg;\n-\t\t\ti++;\n-\t\t\tbreak;\n-\t\t}\n-\t\tif (!strcmp(arg, \"-v\")) {\n-\t\t\tverbose=1;\n-\t\t\tcontinue;\n-\t\t}\n-\t\tif (!prefixcmp(arg, \"--repo=\")) {\n-\t\t\trepo = arg+7;\n-\t\t\tcontinue;\n-\t\t}\n-\t\tif (!strcmp(arg, \"--all\")) {\n-\t\t\tflags |= TRANSPORT_PUSH_ALL;\n-\t\t\tcontinue;\n-\t\t}\n-\t\tif (!strcmp(arg, \"--dry-run\")) {\n-\t\t\tflags |= TRANSPORT_PUSH_DRY_RUN;\n-\t\t\tcontinue;\n-\t\t}\n-\t\tif (!strcmp(arg, \"--tags\")) {\n-\t\t\tadd_refspec(\"refs/tags/*\");\n-\t\t\tcontinue;\n-\t\t}\n-\t\tif (!strcmp(arg, \"--force\") || !strcmp(arg, \"-f\")) {\n-\t\t\tflags |= TRANSPORT_PUSH_FORCE;\n-\t\t\tcontinue;\n-\t\t}\n-\t\tif (!strcmp(arg, \"--thin\")) {\n-\t\t\tthin = 1;\n-\t\t\tcontinue;\n-\t\t}\n-\t\tif (!strcmp(arg, \"--no-thin\")) {\n-\t\t\tthin = 0;\n-\t\t\tcontinue;\n-\t\t}\n-\t\tif (!prefixcmp(arg, \"--receive-pack=\")) {\n-\t\t\treceivepack = arg + 15;\n-\t\t\tcontinue;\n-\t\t}\n-\t\tif (!prefixcmp(arg, \"--exec=\")) {\n-\t\t\treceivepack = arg + 7;\n-\t\t\tcontinue;\n-\t\t}\n-\t\tusage(push_usage);\n+\targc = parse_options(argc, argv, options, push_usage, 0);\n+\n+\tif (force)\n+\t\tflags |= TRANSPORT_PUSH_FORCE;\n+\tif (dry_run)\n+\t\tflags |= TRANSPORT_PUSH_DRY_RUN;\n+\tif (tags)\n+\t\tadd_refspec(\"refs/tags/*\");\n+\tif (all)\n+\t\tflags |= TRANSPORT_PUSH_ALL;\n+\n+\tif (argc > 0) {\n+\t\trepo = argv[0];\n+\t\tset_refspecs(argv + 1, argc - 1);\n \t}\n-\tset_refspecs(argv + i, argc - i);\n \tif ((flags & TRANSPORT_PUSH_ALL) && refspec)\n-\t\tusage(push_usage);\n+\t\tusage_with_options(push_usage, options);\n \n \treturn do_push(repo, flags);\n }\n-- \n1.5.3.5.1528.gb6568-dirty\n"},{"id":"58429","messageId":"7v8x5cnz02.fsf@gitster.siamese.dyndns.org","threadId":"10661","inReplyTo":"Pine.LNX.4.64.0711042235350.7357@iabervon.org","subject":"Re: [PATCH] Use parseopts in builtin-push","fromName":"Junio C Hamano","fromEmail":"gitster@pobox.com","sentAt":"2007-11-05T21:50:05Z","receivedAt":"2007-11-05T21:50:05Z","isPatch":true,"sender":{"key":"gitster@pobox.com","avatar":"https://avatars.githubusercontent.com/u/54884?v=4"},"body":"Thanks; will take this one.\n\nThe finalized version for builtin-fetch is appreciated.\n"}]}