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

[PATCH v2 0/8] grep: simplify & delete code by changing obscure cfg variable behavior

From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Date
Nov 10, 2021, 01:43 UTC
Message-ID
<cover-v2-0.8-00000000000-20211110T013632Z-avarab@gmail.com>
In-Reply-To
<cover-0.8-00000000000-20211106T210711Z-avarab@gmail.com>

This series changes the behavior of an obscure interaction between "grep.extendedRegexp=true" and "grep.patternType=default". See 7-8/8. Along the way we can delete a lot of code that was needed to support the previous behavior.

For v1 and a more extensive summary see [1]. Thanks a lot Taylor for the detailed review on v1!

Hopefully this v1 addresses all the feedback on one way or another, it's still 8 patches, but much of the early part of v1 is squashed together & re-done as suggested.

Then there's a mid-series de-duplication of the grep config documentation. I ended up keeping the change to not needlessly pass "cb" around in grep_cmd_config(), but that's now also in its own patch.

1. https://lore.kernel.org/git/cover-0.8-00000000000-20211106T210711Z-avarab@gmail.com/
Ævar Arnfjörð Bjarmason (8):
  grep.h: remove unused "regex_t regexp" from grep_opt
  built-ins: trust the "prefix" from run_builtin()
  log tests: check if grep_config() is called by "log"-like cmds
  grep docs: de-duplicate configuration sections
  grep.c: don't pass along NULL callback value
  grep API: call grep_config() after grep_init()
  grep: simplify config parsing, change grep.<rx config> interaction
  grep: make "extendedRegexp=true" the same as "patternType=extended"
 Documentation/config/grep.txt |  11 ++--
 Documentation/git-grep.txt    |  30 +--------
 builtin/grep.c                |  27 ++++----
 builtin/log.c                 |  13 +++-
 builtin/ls-tree.c             |   9 ++-
 git.c                         |   4 +-
 grep.c                        | 118 ++++------------------------------
 grep.h                        |  35 ++++++----
 revision.c                    |   4 +-
 t/t4202-log.sh                |  16 +++++
 t/t7810-grep.sh               |   4 +-
 11 files changed, 97 insertions(+), 174 deletions(-)
Range-diff against v1:
1:  412b8b65266 = 1:  1435db727ef grep.h: remove unused "regex_t regexp" from grep_opt
2:  244715e3497 < -:  ----------- git.c & grep.c: assert that "prefix" is NULL or non-zero string
3:  3338cc95b81 < -:  ----------- grep: remove unused "prefix_length" member
4:  78298657d69 < -:  ----------- grep.c: move "prefix" out of "struct grep_opt"
-:  ----------- > 2:  63cf2fe266d built-ins: trust the "prefix" from run_builtin()
5:  ba9be0b9283 = 3:  41e38ebb32c log tests: check if grep_config() is called by "log"-like cmds
-:  ----------- > 4:  efe95397d72 grep docs: de-duplicate configuration sections
-:  ----------- > 5:  d0f0ac6c7ae grep.c: don't pass along NULL callback value
6:  933ac853bca ! 6:  917944f79a5 grep API: call grep_config() after grep_init()
    @@ Commit message
         didn't do that, but now that it can't be a concern anymore let's
         remove those comments.
     
    +    This does not change the behavior of any of the configuration
    +    variables or options. That would have been the case if we didn't move
    +    around the grep_config() call in "builtin/log.c". But now that we call
    +    "grep_config" after "git_log_config" and "git_format_config" we'll
    +    need to pass in the already initialized "struct grep_opt *".
    +
         See 6ba9bb76e02 (grep: copy struct in one fell swoop, 2020-11-29) and
         7687a0541e0 (grep: move the configuration parsing logic to grep.[ch],
         2012-10-09) for the commits that added the comments.
     
    +    The memcpy() pattern here will be optimized away and follows the
    +    convention of other *_init() functions. See 5726a6b4012 (*.c *_init():
    +    define in terms of corresponding *_INIT macro, 2021-07-01).
    +
         Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
     
      ## builtin/grep.c ##
     @@ builtin/grep.c: static int wait_all(void)
    + 
      static int grep_cmd_config(const char *var, const char *value, void *cb)
      {
    - 	int st = grep_config(var, value, cb);
    --	if (git_color_default_config(var, value, cb) < 0)
    -+	if (git_color_default_config(var, value, NULL) < 0)
    +-	int st = grep_config(var, value, NULL);
    ++	int st = grep_config(var, value, cb);
    + 	if (git_color_default_config(var, value, NULL) < 0)
      		st = -1;
      
    - 	if (!strcmp(var, "grep.threads")) {
     @@ builtin/grep.c: int cmd_grep(int argc, const char **argv, const char *prefix)
    - 		OPT_END()
      	};
    + 	grep_prefix = prefix;
      
     -	git_config(grep_cmd_config, NULL);
      	grep_init(&opt, the_repository);
     +	git_config(grep_cmd_config, &opt);
    - 	opt.caller_priv = &opt_cmd;
      
      	/*
    + 	 * If there is no -- then the paths must exist in the working
     
      ## builtin/log.c ##
     @@ builtin/log.c: static int git_log_config(const char *var, const char *value, void *cb)
    @@ grep.c: int grep_config(const char *var, const char *value, void *cb)
     
      ## grep.h ##
     @@ grep.h: struct grep_opt {
    + 	int show_hunk_mark;
    + 	int file_break;
    + 	int heading;
    ++	void *caller_priv;
    + 	void *priv;
    + 
    + 	void (*output)(struct grep_opt *opt, const void *data, size_t size);
      	void *output_priv;
      };
      
7:  677a8f8520f ! 7:  140a7416223 grep: simplify config parsing, change grep.<rx config> interaction
    @@ Commit message
         but in a way that's consistent with how we parse other
         configuration.
     
    -    Pedantically speaking we're probably breaking past promises here, but
    -    I doubt that this will impact anyone in practice. The reduction in
    -    complexity and resulting consistency with other default config
    -    behavior is worth it.
    +    We are breaking past promises here, but I doubt that this will impact
    +    anyone in practice. The reduction in complexity and resulting
    +    consistency with other default config behavior is worth it.
     
         When "grep.patternType" was introduced in 84befcd0a4a (grep: add a
         grep.patternType configuration setting, 2012-08-03) we made two
    @@ Commit message
             # BRE grep
             git -c grep.extendedRegexp=true -c grep.patternType=basic grep <pattern>
     
    -    But probably not for this to ignore the new "grep.patternType" option
    -    entirely, say if /etc/gitconfig was still setting
    +    But probably not for this to ignore the favored "grep.patternType"
    +    option entirely, say if /etc/gitconfig was still setting
         "grep.extendedRegexp", but "~/.gitconfig" used the new
         "grep.patternType" (and wanted to use the "default" value):
     
    @@ Documentation/config/grep.txt: grep.patternType::
      	If set to true, enable `--extended-regexp` option by default. This
     -	option is ignored when the `grep.patternType` option is set to a value
     -	other than 'default'.
    -+	option is ignored when the `grep.patternType` option is set.
    - 
    - grep.threads::
    - 	Number of grep worker threads to use.
    -
    - ## Documentation/git-grep.txt ##
    -@@ Documentation/git-grep.txt: grep.patternType::
    - 
    - grep.extendedRegexp::
    - 	If set to true, enable `--extended-regexp` option by default. This
    --	option is ignored when the `grep.patternType` option is set to a value
    --	other than 'default'.
     +	option is ignored when the `grep.patternType` option is set.
      
      grep.threads::
8:  dadd5dff77a ! 8:  cc904d93b26 grep: make "extendedRegexp=true" the same as "patternType=extended"
    @@ Documentation/config/grep.txt: grep.patternType::
      grep.extendedRegexp::
     -	If set to true, enable `--extended-regexp` option by default. This
     -	option is ignored when the `grep.patternType` option is set.
    -+	Deprecated synonym for 'grep.patternType=extended`.
    - 
    - grep.threads::
    - 	Number of grep worker threads to use.
    -
    - ## Documentation/git-grep.txt ##
    -@@ Documentation/git-grep.txt: grep.patternType::
    - 	value 'default' will return to the default matching behavior.
    - 
    - grep.extendedRegexp::
    --	If set to true, enable `--extended-regexp` option by default. This
    --	option is ignored when the `grep.patternType` option is set.
     +	Deprecated synonym for 'grep.patternType=extended`.
      
      grep.threads::
    @@ grep.h: struct grep_opt {
      	.colors = { \
      		[GREP_COLOR_CONTEXT] = "", \
      		[GREP_COLOR_FILENAME] = "", \
    -@@ grep.h: struct grep_opt {
    - 		[GREP_COLOR_SELECTED] = "", \
    - 		[GREP_COLOR_SEP] = GIT_COLOR_CYAN, \
    - 	}, \
    --	.only_matching = 0, \
    - 	.color = -1, \
    - 	.output = std_output, \
    - }
     
      ## t/t7810-grep.sh ##
     @@ t/t7810-grep.sh: do
-- 
2.34.0.rc1.741.gab7bfd97031
Previous: Ævar Arnfjörð BjarmasonNext: Ævar Arnfjörð Bjarmason
Message 21 of 151 in “grep: simplify & delete code by changing obscure cfg variable behavior”
  1. 0/8 grep: simplify & delete code by changing obscure cfg variable behaviorÆvar Arnfjörð Bjarmason, Nov 6, 2021
  2. 1/8 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Nov 6, 2021
  3. 2/8 git.c & grep.c: assert that "prefix" is NULL or non-zero stringÆvar Arnfjörð Bjarmason, Nov 6, 2021
  4. Taylor BlauNov 8, 2021
  5. 3/8 grep: remove unused "prefix_length" memberÆvar Arnfjörð Bjarmason, Nov 6, 2021
  6. Taylor BlauNov 8, 2021
  7. 4/8 grep.c: move "prefix" out of "struct grep_opt"Ævar Arnfjörð Bjarmason, Nov 6, 2021
  8. Taylor BlauNov 8, 2021
  9. Ævar Arnfjörð BjarmasonNov 9, 2021
  10. Taylor BlauNov 10, 2021
  11. 5/8 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Nov 6, 2021
  12. 6/8 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Nov 6, 2021
  13. Taylor BlauNov 8, 2021
  14. Ævar Arnfjörð BjarmasonNov 9, 2021
  15. Taylor BlauNov 10, 2021
  16. 7/8 grep: simplify config parsing, change grep.<rx config> interactionÆvar Arnfjörð Bjarmason, Nov 6, 2021
  17. Taylor BlauNov 8, 2021
  18. Ævar Arnfjörð BjarmasonNov 9, 2021
  19. Taylor BlauNov 10, 2021
  20. 8/8 grep: make "extendedRegexp=true" the same as "patternType=extended"Ævar Arnfjörð Bjarmason, Nov 6, 2021
  21. 0/8 grep: simplify & delete code by changing obscure cfg variable behaviorÆvar Arnfjörð Bjarmason, Nov 10, 2021
  22. 1/8 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Nov 10, 2021
  23. Junio C HamanoNov 12, 2021
  24. 2/8 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Nov 10, 2021
  25. Junio C HamanoNov 12, 2021
  26. 3/8 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Nov 10, 2021
  27. Junio C HamanoNov 12, 2021
  28. 4/8 grep docs: de-duplicate configuration sectionsÆvar Arnfjörð Bjarmason, Nov 10, 2021
  29. Junio C HamanoNov 12, 2021
  30. 5/8 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Nov 10, 2021
  31. Junio C HamanoNov 12, 2021
  32. 6/8 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Nov 10, 2021
  33. Junio C HamanoNov 12, 2021
  34. 7/8 grep: simplify config parsing, change grep.<rx config> interactionÆvar Arnfjörð Bjarmason, Nov 10, 2021
  35. Junio C HamanoNov 12, 2021
  36. Ævar Arnfjörð BjarmasonNov 13, 2021
  37. 8/8 grep: make "extendedRegexp=true" the same as "patternType=extended"Ævar Arnfjörð Bjarmason, Nov 10, 2021
  38. Junio C HamanoNov 12, 2021
  39. Taylor BlauNov 10, 2021
  40. 0/7 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Nov 29, 2021
  41. 1/7 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Nov 29, 2021
  42. 2/7 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Nov 29, 2021
  43. Tests in t4202 are aborted early, was: Re: [PATCH v3 2/7] logFabian Stelzer, Mar 4, 2022
  44. log tests: fix "abort tests early" regression in ff37a60c369Ævar Arnfjörð Bjarmason, Mar 4, 2022
  45. 4/7 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Nov 29, 2021
  46. 3/7 grep tests: add missing "grep.patternType" config testÆvar Arnfjörð Bjarmason, Nov 29, 2021
  47. Junio C HamanoNov 29, 2021
  48. Junio C HamanoDec 3, 2021
  49. 6/7 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Nov 29, 2021
  50. 5/7 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Nov 29, 2021
  51. 7/7 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Nov 29, 2021
  52. Junio C HamanoNov 29, 2021
  53. Junio C HamanoNov 29, 2021
  54. 0/7 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Dec 3, 2021
  55. 1/7 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Dec 3, 2021
  56. 2/7 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Dec 3, 2021
  57. 3/7 grep tests: add missing "grep.patternType" config testÆvar Arnfjörð Bjarmason, Dec 3, 2021
  58. 4/7 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Dec 3, 2021
  59. 5/7 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Dec 3, 2021
  60. 6/7 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Dec 3, 2021
  61. 7/7 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Dec 3, 2021
  62. 0/7 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Dec 22, 2021
  63. 1/7 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Dec 22, 2021
  64. 2/7 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Dec 22, 2021
  65. 3/7 grep tests: add missing "grep.patternType" config testÆvar Arnfjörð Bjarmason, Dec 22, 2021
  66. Junio C HamanoDec 23, 2021
  67. Re* [PATCH v5 3/7] grep tests: add missing "grep.patternType" config testJunio C Hamano, Dec 25, 2021
  68. grep: allow scripts to ignore configured pattern typeJunio C Hamano, Dec 25, 2021
  69. Ævar Arnfjörð BjarmasonDec 26, 2021
  70. Junio C HamanoDec 25, 2021
  71. 4/7 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Dec 22, 2021
  72. 5/7 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Dec 22, 2021
  73. 6/7 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Dec 22, 2021
  74. 7/7 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Dec 22, 2021
  75. Junio C HamanoDec 23, 2021
  76. Junio C HamanoDec 23, 2021
  77. 0/7 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Dec 26, 2021
  78. 1/7 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Dec 26, 2021
  79. 2/7 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Dec 26, 2021
  80. 3/7 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Dec 26, 2021
  81. 4/7 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Dec 26, 2021
  82. 5/7 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Dec 26, 2021
  83. 6/7 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Dec 26, 2021
  84. 7/7 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Dec 26, 2021
  85. Junio C HamanoDec 27, 2021
  86. Junio C HamanoDec 27, 2021
  87. 00/10 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Dec 28, 2021
  88. 01/10 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Dec 28, 2021
  89. 02/10 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Dec 28, 2021
  90. 03/10 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Dec 28, 2021
  91. 04/10 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Dec 28, 2021
  92. 05/10 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Dec 28, 2021
  93. 06/10 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Dec 28, 2021
  94. 10/10 grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIEDÆvar Arnfjörð Bjarmason, Dec 28, 2021
  95. 09/10 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Dec 28, 2021
  96. 07/10 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Dec 28, 2021
  97. 08/10 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Dec 28, 2021
  98. 00/10 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Jan 18, 2022
  99. 01/10 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Jan 18, 2022
  100. 02/10 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Jan 18, 2022
  101. 03/10 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Jan 18, 2022
  102. 04/10 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Jan 18, 2022
  103. 05/10 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Jan 18, 2022
  104. 06/10 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Jan 18, 2022
  105. 07/10 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Jan 18, 2022
  106. 08/10 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Jan 18, 2022
  107. 10/10 grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIEDÆvar Arnfjörð Bjarmason, Jan 18, 2022
  108. 09/10 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Jan 18, 2022
  109. Junio C HamanoJan 18, 2022
  110. Junio C HamanoJan 18, 2022
  111. Ævar Arnfjörð BjarmasonJan 19, 2022
  112. Junio C HamanoJan 19, 2022
  113. Ævar Arnfjörð BjarmasonJan 19, 2022
  114. 0/9 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Jan 27, 2022
  115. 1/9 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Jan 27, 2022
  116. 2/9 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Jan 27, 2022
  117. 3/9 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Jan 27, 2022
  118. 4/9 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Jan 27, 2022
  119. 5/9 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Jan 27, 2022
  120. 6/9 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Jan 27, 2022
  121. 7/9 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Jan 27, 2022
  122. 9/9 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Jan 27, 2022
  123. Junio C HamanoJan 27, 2022
  124. Junio C HamanoJan 27, 2022
  125. Junio C HamanoJan 27, 2022
  126. 8/9 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Jan 27, 2022
  127. 0/9 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Feb 4, 2022
  128. 1/9 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Feb 4, 2022
  129. 3/9 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Feb 4, 2022
  130. Junio C HamanoFeb 4, 2022
  131. Junio C HamanoFeb 4, 2022
  132. 2/9 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Feb 4, 2022
  133. 5/9 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Feb 4, 2022
  134. 4/9 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Feb 4, 2022
  135. 7/9 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Feb 4, 2022
  136. 8/9 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Feb 4, 2022
  137. 6/9 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Feb 4, 2022
  138. 9/9 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Feb 4, 2022
  139. Junio C HamanoFeb 4, 2022
  140. 00/10 grep: simplify & delete "init" & "config" codeÆvar Arnfjörð Bjarmason, Feb 16, 2022
  141. 01/10 grep.h: remove unused "regex_t regexp" from grep_optÆvar Arnfjörð Bjarmason, Feb 16, 2022
  142. 02/10 log tests: check if grep_config() is called by "log"-like cmdsÆvar Arnfjörð Bjarmason, Feb 16, 2022
  143. 05/10 built-ins: trust the "prefix" from run_builtin()Ævar Arnfjörð Bjarmason, Feb 16, 2022
  144. 03/10 grep tests: create a helper function for "BRE" or "ERE"Ævar Arnfjörð Bjarmason, Feb 16, 2022
  145. 04/10 grep tests: add missing "grep.patternType" config testsÆvar Arnfjörð Bjarmason, Feb 16, 2022
  146. 06/10 grep.c: don't pass along NULL callback valueÆvar Arnfjörð Bjarmason, Feb 16, 2022
  147. 08/10 grep.h: make "grep_opt.pattern_type_option" use its enumÆvar Arnfjörð Bjarmason, Feb 16, 2022
  148. 07/10 grep API: call grep_config() after grep_init()Ævar Arnfjörð Bjarmason, Feb 16, 2022
  149. 09/10 grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"Ævar Arnfjörð Bjarmason, Feb 16, 2022
  150. 10/10 grep: simplify config parsing and option parsingÆvar Arnfjörð Bjarmason, Feb 16, 2022
  151. Junio C HamanoFeb 16, 2022

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.