git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 0/3] Add some more options to the pretty-formats

From
Eli Schwartz <eschwartz@archlinux.org>
Date
Oct 31, 2021, 17:15 UTC
Message-ID
<20211031171510.1646396-1-eschwartz@archlinux.org>
In-Reply-To
<20211029184512.1568017-1-eschwartz@archlinux.org>

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
Previous: Junio C HamanoNext: Eli Schwartz
Message 41 of 46 in “Add some more options to the pretty-formats”
  1. 0/3 Add some more options to the pretty-formatsEli Schwartz, Oct 24, 2021
  2. 1/3 pretty.c: rename describe options variable to more descriptive nameEli Schwartz, Oct 24, 2021
  3. Junio C HamanoOct 24, 2021
  4. Eli SchwartzOct 24, 2021
  5. 3/3 pretty: add abbrev option to %(describe)Eli Schwartz, Oct 24, 2021
  6. Junio C HamanoOct 24, 2021
  7. Eli SchwartzOct 24, 2021
  8. 2/3 pretty: add tag option to %(describe)Eli Schwartz, Oct 24, 2021
  9. Junio C HamanoOct 24, 2021
  10. Eli SchwartzOct 24, 2021
  11. 0/3 Add some more options to the pretty-formatsEli Schwartz, Oct 26, 2021
  12. 1/3 pretty.c: rework describe options parsing for better extensibilityEli Schwartz, Oct 26, 2021
  13. Eric SunshineOct 26, 2021
  14. Eli SchwartzOct 26, 2021
  15. 2/3 pretty: add tag option to %(describe)Eli Schwartz, Oct 26, 2021
  16. Eric SunshineOct 26, 2021
  17. Eli SchwartzOct 26, 2021
  18. 3/3 pretty: add abbrev option to %(describe)Eli Schwartz, Oct 26, 2021
  19. Eric SunshineOct 26, 2021
  20. Đoàn Trần Công DanhOct 26, 2021
  21. Eric SunshineOct 26, 2021
  22. Eli SchwartzOct 26, 2021
  23. Carlo ArenasOct 27, 2021
  24. Johannes SchindelinNov 3, 2021
  25. Johannes SchindelinNov 4, 2021
  26. Eli SchwartzNov 7, 2021
  27. 0/3 Add some more options to the pretty-formatsEli Schwartz, Oct 29, 2021
  28. 2/3 pretty: add tag option to %(describe)Eli Schwartz, Oct 29, 2021
  29. Junio C HamanoOct 29, 2021
  30. Eli SchwartzOct 29, 2021
  31. Junio C HamanoOct 29, 2021
  32. Junio C HamanoOct 29, 2021
  33. Eli SchwartzOct 29, 2021
  34. 3/3 pretty: add abbrev option to %(describe)Eli Schwartz, Oct 29, 2021
  35. Eric SunshineOct 29, 2021
  36. Eli SchwartzOct 29, 2021
  37. 1/3 pretty.c: rework describe options parsing for better extensibilityEli Schwartz, Oct 29, 2021
  38. Junio C HamanoOct 29, 2021
  39. Eli SchwartzOct 29, 2021
  40. Junio C HamanoOct 29, 2021
  41. 0/3 Add some more options to the pretty-formatsEli Schwartz, Oct 31, 2021
  42. 1/3 pretty.c: rework describe options parsing for better extensibilityEli Schwartz, Oct 31, 2021
  43. 2/3 pretty: add tag option to %(describe)Eli Schwartz, Oct 31, 2021
  44. Junio C HamanoOct 31, 2021
  45. Eli SchwartzOct 31, 2021
  46. 3/3 pretty: add abbrev option to %(describe)Eli Schwartz, Oct 31, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.