This revision only contains style nits in response to review comments. See below. 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 | 54 ++++++++++++++++++++++++++------ t/t4205-log-pretty-formats.sh | 16 ++++++++++ 3 files changed, 71 insertions(+), 15 deletions(-) Range-diff against v2: 1: 1cf0d82b91 ! 1: 55a20468d3 pretty.c: rework describe options parsing for better extensibility @@ pretty.c: int format_set_trailers_options(struct process_trailer_options *opts, - &argval, &arglen)) { - matched = options[i]; + for (i = 0; !found && i < ARRAY_SIZE(option); i++) { -+ switch(option[i].type) { ++ switch (option[i].type) { + case OPT_STRING: + if (match_placeholder_arg_value(arg, option[i].name, &arg, -+ &argval, &arglen) && arglen) { ++ &argval, &arglen)) { + if (!arglen) + return 0; + strvec_pushf(args, "--%s=%.*s", option[i].name, (int)arglen, argval); 2: cb6af9bc14 ! 2: c34c8a4f7f pretty: add tag option to %(describe) @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *ar int i; for (i = 0; !found && i < ARRAY_SIZE(option); i++) { - switch(option[i].type) { + switch (option[i].type) { + case OPT_BOOL: -+ if(match_placeholder_bool_arg(arg, option[i].name, &arg, &optval)) { -+ if (optval) { ++ if (match_placeholder_bool_arg(arg, option[i].name, &arg, &optval)) { ++ if (optval) + strvec_pushf(args, "--%s", option[i].name); -+ } else { ++ else + strvec_pushf(args, "--no-%s", option[i].name); -+ } + found = 1; + } + break; case OPT_STRING: if (match_placeholder_arg_value(arg, option[i].name, &arg, - &argval, &arglen) && arglen) { + &argval, &arglen)) { ## t/t4205-log-pretty-formats.sh ## @@ t/t4205-log-pretty-formats.sh: test_expect_success '%(describe:exclude=...) vs git describe --exclude ...' ' 3: 08ade18b35 ! 3: b751aaf3c6 pretty: add abbrev option to %(describe) @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *ar break; + case OPT_INTEGER: + if (match_placeholder_arg_value(arg, option[i].name, &arg, -+ &argval, &arglen) && arglen) { ++ &argval, &arglen)) { ++ char *endptr; + if (!arglen) + return 0; -+ char* endptr; + strtol(argval, &endptr, 10); + if (endptr - argval != arglen) + return 0; @@ pretty.c: static size_t parse_describe_args(const char *start, struct strvec *ar + break; case OPT_STRING: if (match_placeholder_arg_value(arg, option[i].name, &arg, - &argval, &arglen) && arglen) { + &argval, &arglen)) { ## t/t4205-log-pretty-formats.sh ## @@ t/t4205-log-pretty-formats.sh: test_expect_success '%(describe:tags) vs git describe --tags' ' -- 2.33.1