Renamed enum values. OPT_ -> DESCRIBE_ARG_ Doc fixups. Eli Schwartz (3): pretty.c: rework describe options parsing for better extensibility pretty: add tag option to %(describe) pretty: add abbrev option to %(describe) Documentation/pretty-formats.txt | 16 ++++++--- pretty.c | 58 ++++++++++++++++++++++++++------ t/t4205-log-pretty-formats.sh | 16 +++++++++ 3 files changed, 75 insertions(+), 15 deletions(-) Range-diff against v3: 1: 55a20468d3 ! 1: be35fee252 pretty.c: rework describe options parsing for better extensibility @@ pretty.c: int format_set_trailers_options(struct process_trailer_options *opts, - const char *options[] = { "match", "exclude" }; + struct { + char *name; -+ enum { OPT_STRING } type; ++ enum { ++ DESCRIBE_ARG_STRING, ++ } type; + } option[] = { -+ { "exclude", OPT_STRING }, -+ { "match", OPT_STRING }, ++ { "exclude", DESCRIBE_ARG_STRING }, ++ { "match", DESCRIBE_ARG_STRING }, + }; const char *arg = start; @@ pretty.c: int format_set_trailers_options(struct process_trailer_options *opts, - matched = options[i]; + for (i = 0; !found && i < ARRAY_SIZE(option); i++) { + switch (option[i].type) { -+ case OPT_STRING: ++ case DESCRIBE_ARG_STRING: + if (match_placeholder_arg_value(arg, option[i].name, &arg, + &argval, &arglen)) { + if (!arglen) 2: c34c8a4f7f ! 2: 5830c69d4d pretty: add tag option to %(describe) @@ Documentation/pretty-formats.txt: The placeholders are: inconsistent when tags are added or removed at the same time. + -+** 'tags[=<BOOL>]': Instead of only considering annotated tags, ++** 'tags[=<bool>]': Instead of only considering annotated tags, + consider lightweight tags as well. ** 'match=<pattern>': Only consider tags matching the given `glob(7)` pattern, excluding the "refs/tags/" prefix. @@ Documentation/pretty-formats.txt: insert an empty string unless we are traversin decoration format if `--decorate` was not already provided on the command line. -+The boolean options accept an optional value `[=<BOOL>]`. The values ++The boolean options accept an optional value `[=<bool>]`. The values +`true`, `false`, `on`, `off` etc. are all accepted. See the "boolean" +sub-section in "EXAMPLES" in linkgit:git-config[1]. If a boolean +option is given with no value, it's enabled. @@ Documentation/pretty-formats.txt: insert an empty string unless we are traversin ## pretty.c ## @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *args) - { struct { char *name; -- enum { OPT_STRING } type; -+ enum { OPT_BOOL, OPT_STRING, } type; + enum { ++ DESCRIBE_ARG_BOOL, + DESCRIBE_ARG_STRING, + } type; } option[] = { -+ { "tags", OPT_BOOL}, - { "exclude", OPT_STRING }, - { "match", OPT_STRING }, ++ { "tags", DESCRIBE_ARG_BOOL}, + { "exclude", DESCRIBE_ARG_STRING }, + { "match", DESCRIBE_ARG_STRING }, }; @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *args) int found = 0; @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *ar for (i = 0; !found && i < ARRAY_SIZE(option); i++) { switch (option[i].type) { -+ case OPT_BOOL: ++ case DESCRIBE_ARG_BOOL: + if (match_placeholder_bool_arg(arg, option[i].name, &arg, &optval)) { + if (optval) + strvec_pushf(args, "--%s", option[i].name); @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *ar + found = 1; + } + break; - case OPT_STRING: + case DESCRIBE_ARG_STRING: if (match_placeholder_arg_value(arg, option[i].name, &arg, &argval, &arglen)) { 3: b751aaf3c6 ! 3: 032513150d pretty: add abbrev option to %(describe) @@ Commit message ## Documentation/pretty-formats.txt ## @@ Documentation/pretty-formats.txt: The placeholders are: + - ** 'tags[=<BOOL>]': Instead of only considering annotated tags, + ** 'tags[=<bool>]': Instead of only considering annotated tags, consider lightweight tags as well. -+** 'abbrev=<N>': Instead of using the default number of hexadecimal digits ++** 'abbrev=<number>': Instead of using the default number of hexadecimal digits + (which will vary according to the number of objects in the repository with a -+ default of 7) of the abbreviated object name, use <n> digits, or as many digits -+ as needed to form a unique object name. ++ default of 7) of the abbreviated object name, use <number> digits, or as many ++ digits as needed to form a unique object name. ** 'match=<pattern>': Only consider tags matching the given `glob(7)` pattern, excluding the "refs/tags/" prefix. ** 'exclude=<pattern>': Do not consider tags matching the given ## pretty.c ## @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *args) - { - struct { char *name; -- enum { OPT_BOOL, OPT_STRING, } type; -+ enum { OPT_BOOL, OPT_INTEGER, OPT_STRING, } type; + enum { + DESCRIBE_ARG_BOOL, ++ DESCRIBE_ARG_INTEGER, + DESCRIBE_ARG_STRING, + } type; } option[] = { - { "tags", OPT_BOOL}, -+ { "abbrev", OPT_INTEGER }, - { "exclude", OPT_STRING }, - { "match", OPT_STRING }, + { "tags", DESCRIBE_ARG_BOOL}, ++ { "abbrev", DESCRIBE_ARG_INTEGER }, + { "exclude", DESCRIBE_ARG_STRING }, + { "match", DESCRIBE_ARG_STRING }, }; @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *args) found = 1; } break; -+ case OPT_INTEGER: ++ case DESCRIBE_ARG_INTEGER: + if (match_placeholder_arg_value(arg, option[i].name, &arg, + &argval, &arglen)) { + char *endptr; @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *ar + found = 1; + } + break; - case OPT_STRING: + case DESCRIBE_ARG_STRING: if (match_placeholder_arg_value(arg, option[i].name, &arg, &argval, &arglen)) { -- 2.33.1