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

[PATCH 05/20] diff-parseopt: convert -S|-G

From
Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Date
Mar 20, 2019, 11:46 UTC
Message-ID
<20190320114703.18659-6-pclouds@gmail.com>
In-Reply-To
<20190320114703.18659-1-pclouds@gmail.com>
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 37 ++++++++++++++++++++++++++++---------
 1 file changed, 28 insertions(+), 9 deletions(-)
diff --git a/diff.c b/diff.c
index a2abc7e5b0..e198129353 100644
--- a/diff.c
+++ b/diff.c
@@ -5056,6 +5056,28 @@ static int diff_opt_patience(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_pickaxe_regex(const struct option *opt,
+				  const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	options->pickaxe = arg;
+	options->pickaxe_opts |= DIFF_PICKAXE_KIND_G;
+	return 0;
+}
+
+static int diff_opt_pickaxe_string(const struct option *opt,
+				   const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	options->pickaxe = arg;
+	options->pickaxe_opts |= DIFF_PICKAXE_KIND_S;
+	return 0;
+}
+
 static int diff_opt_relative(const struct option *opt,
 			     const char *arg, int unset)
 {
@@ -5363,6 +5385,12 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_SET_INT_F(0, "ita-visible-in-index", &options->ita_invisible_in_index,
 			      N_("treat 'git add -N' entries as real in the index"),
 			      0, PARSE_OPT_NONEG),
+		OPT_CALLBACK_F('S', NULL, options, N_("<string>"),
+			       N_("look for differences that change the number of occurrences of the specified string"),
+			       0, diff_opt_pickaxe_string),
+		OPT_CALLBACK_F('G', NULL, options, N_("<regex>"),
+			       N_("look for differences that change the number of occurrences of the specified regex"),
+			       0, diff_opt_pickaxe_regex),
 		{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
 		  N_("Output to a specific file"),
 		  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
@@ -5415,15 +5443,6 @@ int diff_opt_parse(struct diff_options *options,
 	}
 
 	/* misc options */
-	else if ((argcount = short_opt('S', av, &optarg))) {
-		options->pickaxe = optarg;
-		options->pickaxe_opts |= DIFF_PICKAXE_KIND_S;
-		return argcount;
-	} else if ((argcount = short_opt('G', av, &optarg))) {
-		options->pickaxe = optarg;
-		options->pickaxe_opts |= DIFF_PICKAXE_KIND_G;
-		return argcount;
-	}
 	else if (!strcmp(arg, "--pickaxe-all"))
 		options->pickaxe_opts |= DIFF_PICKAXE_ALL;
 	else if (!strcmp(arg, "--pickaxe-regex"))
-- 
2.21.0.548.gd3c7d92dc2
Previous: Nguyễn Thái Ngọc DuyNext: Nguyễn Thái Ngọc Duy
Message 7 of 52 in “nd/diff-parseopt the last part”
  1. 00/20 nd/diff-parseopt the last partNguyễn Thái Ngọc Duy, Mar 20, 2019
  2. 01/20 diff-parseopt: convert --ws-error-highlightNguyễn Thái Ngọc Duy, Mar 20, 2019
  3. Martin ÅgrenMar 20, 2019
  4. 02/20 diff-parseopt: convert --ita-[in]visible-in-indexNguyễn Thái Ngọc Duy, Mar 20, 2019
  5. 03/20 diff-parseopt: convert -zNguyễn Thái Ngọc Duy, Mar 20, 2019
  6. 04/20 diff-parseopt: convert -lNguyễn Thái Ngọc Duy, Mar 20, 2019
  7. 05/20 diff-parseopt: convert -S|-GNguyễn Thái Ngọc Duy, Mar 20, 2019
  8. 06/20 diff-parseopt: convert --pickaxe-all|--pickaxe-regexNguyễn Thái Ngọc Duy, Mar 20, 2019
  9. 07/20 diff-parseopt: convert -ONguyễn Thái Ngọc Duy, Mar 20, 2019
  10. Martin ÅgrenMar 20, 2019
  11. 08/20 diff-parseopt: convert --find-objectNguyễn Thái Ngọc Duy, Mar 20, 2019
  12. 09/20 diff-parseopt: convert --diff-filterNguyễn Thái Ngọc Duy, Mar 20, 2019
  13. 10/20 diff-parseopt: convert --[no-]abbrevNguyễn Thái Ngọc Duy, Mar 20, 2019
  14. Ævar Arnfjörð BjarmasonMar 20, 2019
  15. Duy NguyenMar 21, 2019
  16. 11/20 diff-parseopt: convert --[src|dst]-prefixNguyễn Thái Ngọc Duy, Mar 20, 2019
  17. 12/20 diff-parseopt: convert --line-prefixNguyễn Thái Ngọc Duy, Mar 20, 2019
  18. 13/20 diff-parseopt: convert --no-prefixNguyễn Thái Ngọc Duy, Mar 20, 2019
  19. Martin ÅgrenMar 20, 2019
  20. 14/20 diff-parseopt: convert --inter-hunk-contextNguyễn Thái Ngọc Duy, Mar 20, 2019
  21. 15/20 diff-parseopt: convert --[no-]color-movedNguyễn Thái Ngọc Duy, Mar 20, 2019
  22. 16/20 diff-parseopt: convert --color-moved-wsNguyễn Thái Ngọc Duy, Mar 20, 2019
  23. 17/20 diff.c: allow --no-color-moved-wsNguyễn Thái Ngọc Duy, Mar 20, 2019
  24. 18/20 range-diff: use parse_options() instead of diff_opt_parse()Nguyễn Thái Ngọc Duy, Mar 20, 2019
  25. 19/20 diff --no-index: use parse_options() instead of diff_opt_parse()Nguyễn Thái Ngọc Duy, Mar 20, 2019
  26. 20/20 am: avoid diff_opt_parse()Nguyễn Thái Ngọc Duy, Mar 20, 2019
  27. 00/20 nd/diff-parseopt the last partNguyễn Thái Ngọc Duy, Mar 24, 2019
  28. 01/20 diff-parseopt: convert --ws-error-highlightNguyễn Thái Ngọc Duy, Mar 24, 2019
  29. 02/20 diff-parseopt: convert --ita-[in]visible-in-indexNguyễn Thái Ngọc Duy, Mar 24, 2019
  30. 03/20 diff-parseopt: convert -zNguyễn Thái Ngọc Duy, Mar 24, 2019
  31. 04/20 diff-parseopt: convert -lNguyễn Thái Ngọc Duy, Mar 24, 2019
  32. 05/20 diff-parseopt: convert -S|-GNguyễn Thái Ngọc Duy, Mar 24, 2019
  33. 06/20 diff-parseopt: convert --pickaxe-all|--pickaxe-regexNguyễn Thái Ngọc Duy, Mar 24, 2019
  34. 07/20 diff-parseopt: convert -ONguyễn Thái Ngọc Duy, Mar 24, 2019
  35. 08/20 diff-parseopt: convert --find-objectNguyễn Thái Ngọc Duy, Mar 24, 2019
  36. 09/20 diff-parseopt: convert --diff-filterNguyễn Thái Ngọc Duy, Mar 24, 2019
  37. 10/20 diff-parseopt: convert --[no-]abbrevNguyễn Thái Ngọc Duy, Mar 24, 2019
  38. 11/20 diff-parseopt: convert --[src|dst]-prefixNguyễn Thái Ngọc Duy, Mar 24, 2019
  39. 12/20 diff-parseopt: convert --line-prefixNguyễn Thái Ngọc Duy, Mar 24, 2019
  40. 13/20 diff-parseopt: convert --no-prefixNguyễn Thái Ngọc Duy, Mar 24, 2019
  41. 14/20 diff-parseopt: convert --inter-hunk-contextNguyễn Thái Ngọc Duy, Mar 24, 2019
  42. 15/20 diff-parseopt: convert --[no-]color-movedNguyễn Thái Ngọc Duy, Mar 24, 2019
  43. 16/20 diff-parseopt: convert --color-moved-wsNguyễn Thái Ngọc Duy, Mar 24, 2019
  44. 17/20 diff.c: allow --no-color-moved-wsNguyễn Thái Ngọc Duy, Mar 24, 2019
  45. 18/20 range-diff: use parse_options() instead of diff_opt_parse()Nguyễn Thái Ngọc Duy, Mar 24, 2019
  46. 19/20 diff --no-index: use parse_options() instead of diff_opt_parse()Nguyễn Thái Ngọc Duy, Mar 24, 2019
  47. Johannes SchindelinApr 30, 2019
  48. Duy NguyenApr 30, 2019
  49. Johannes SchindelinApr 30, 2019
  50. Duy NguyenMay 1, 2019
  51. Jeff KingMay 1, 2019
  52. 20/20 am: avoid diff_opt_parse()Nguyễn Thái Ngọc Duy, Mar 24, 2019

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.