diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-06-19 12:38:45 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-06-19 12:38:45 -0700 |
commit | 50ad8561dee9d479e41586689486cbbb4a742f7b (patch) | |
tree | 41687648bc7b1674a109fdeb490b9b749f458fde /help.c | |
parent | 06959fe0e1f50608ff872be386a7c53d97f885f4 (diff) | |
parent | d691551192ac845747694258ccae9ffeeb6bdd58 (diff) | |
download | git-50ad8561dee9d479e41586689486cbbb4a742f7b.tar.gz |
Merge branch 'jk/consistent-h'
"git $cmd -h" for builtin commands calls the implementation of the
command (i.e. cmd_$cmd() function) without doing any repository
set-up, and the commands that expect RUN_SETUP is done by the Git
potty needs to be prepared to show the help text without barfing.
* jk/consistent-h:
t0012: test "-h" with builtins
git: add hidden --list-builtins option
version: convert to parse-options
diff- and log- family: handle "git cmd -h" early
submodule--helper: show usage for "-h"
remote-{ext,fd}: print usage message on invalid arguments
upload-archive: handle "-h" option early
credential: handle invalid arguments earlier
Diffstat (limited to 'help.c')
-rw-r--r-- | help.c | 25 |
1 files changed, 20 insertions, 5 deletions
@@ -9,6 +9,7 @@ #include "column.h" #include "version.h" #include "refs.h" +#include "parse-options.h" void add_cmdname(struct cmdnames *cmds, const char *name, int len) { @@ -383,16 +384,30 @@ const char *help_unknown_cmd(const char *cmd) int cmd_version(int argc, const char **argv, const char *prefix) { + int build_options = 0; + const char * const usage[] = { + N_("git version [<options>]"), + NULL + }; + struct option options[] = { + OPT_BOOL(0, "build-options", &build_options, + "also print build options"), + OPT_END() + }; + + argc = parse_options(argc, argv, prefix, options, usage, 0); + /* * The format of this string should be kept stable for compatibility * with external projects that rely on the output of "git version". + * + * Always show the version, even if other options are given. */ printf("git version %s\n", git_version_string); - while (*++argv) { - if (!strcmp(*argv, "--build-options")) { - printf("sizeof-long: %d\n", (int)sizeof(long)); - /* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */ - } + + if (build_options) { + printf("sizeof-long: %d\n", (int)sizeof(long)); + /* NEEDSWORK: also save and output GIT-BUILD_OPTIONS? */ } return 0; } |