All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 00/20] nd/diff-parseopt part 3
@ 2019-03-05 12:30 Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 01/20] diff-parseopt: convert --[no-]indent-heuristic Nguyễn Thái Ngọc Duy
                   ` (19 more replies)
  0 siblings, 20 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

The next part of nd/diff-parseopt to continue converting more diff
options to parseopt. Based on nd/diff-parseopt-2.

Part 4 will hopefully finish the diff.c part and we'll move on to 4-5
more parts on revision.c.

Nguyễn Thái Ngọc Duy (20):
  diff-parseopt: convert --[no-]indent-heuristic
  diff-parseopt: convert --patience
  diff-parseopt: convert --histogram
  diff-parseopt: convert --diff-algorithm
  diff-parseopt: convert --anchored
  diff-parseopt: convert --binary
  diff-parseopt: convert --full-index
  diff-parseopt: convert -a|--text
  diff-parseopt: convert -R
  diff-parseopt: convert --[no-]follow
  diff-parseopt: convert --[no-]color
  diff-parseopt: convert --word-diff
  diff-parseopt: convert --word-diff-regex
  diff-parseopt: convert --color-words
  diff-parseopt: convert --exit-code
  diff-parseopt: convert --quiet
  diff-parseopt: convert --ext-diff
  diff-parseopt: convert --textconv
  diff-parseopt: convert --ignore-submodules
  diff-parseopt: convert --submodule

 Documentation/diff-options.txt |   2 +-
 diff.c                         | 342 ++++++++++++++++++++++-----------
 2 files changed, 229 insertions(+), 115 deletions(-)

-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH 01/20] diff-parseopt: convert --[no-]indent-heuristic
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 02/20] diff-parseopt: convert --patience Nguyễn Thái Ngọc Duy
                   ` (18 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/diff.c b/diff.c
index a63ee4a44d..c4cd84f1b3 100644
--- a/diff.c
+++ b/diff.c
@@ -5124,6 +5124,9 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_BIT_F(0, "ignore-blank-lines", &options->xdl_opts,
 			  N_("ignore changes whose lines are all blank"),
 			  XDF_IGNORE_BLANK_LINES, PARSE_OPT_NONEG),
+		OPT_BIT(0, "indent-heuristic", &options->xdl_opts,
+			N_("heuristic to shift diff hunk boundaries for easy reading"),
+			XDF_INDENT_HEURISTIC),
 
 		OPT_GROUP(N_("Diff other options")),
 		OPT_CALLBACK_F(0, "relative", options, N_("<prefix>"),
@@ -5162,11 +5165,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* xdiff options */
-	if (!strcmp(arg, "--indent-heuristic"))
-		DIFF_XDL_SET(options, INDENT_HEURISTIC);
-	else if (!strcmp(arg, "--no-indent-heuristic"))
-		DIFF_XDL_CLR(options, INDENT_HEURISTIC);
-	else if (!strcmp(arg, "--patience")) {
+	if (!strcmp(arg, "--patience")) {
 		int i;
 		options->xdl_opts = DIFF_WITH_ALG(options, PATIENCE_DIFF);
 		/*
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 02/20] diff-parseopt: convert --patience
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 01/20] diff-parseopt: convert --[no-]indent-heuristic Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 03/20] diff-parseopt: convert --histogram Nguyễn Thái Ngọc Duy
                   ` (17 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 37 +++++++++++++++++++++++++------------
 1 file changed, 25 insertions(+), 12 deletions(-)

diff --git a/diff.c b/diff.c
index c4cd84f1b3..7899c7cc06 100644
--- a/diff.c
+++ b/diff.c
@@ -4960,6 +4960,26 @@ static enum parse_opt_result diff_opt_output(struct parse_opt_ctx_t *ctx,
 	return 0;
 }
 
+static int diff_opt_patience(const struct option *opt,
+			     const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+	int i;
+
+	BUG_ON_OPT_NEG(unset);
+	BUG_ON_OPT_ARG(arg);
+	options->xdl_opts = DIFF_WITH_ALG(options, PATIENCE_DIFF);
+	/*
+	 * Both --patience and --anchored use PATIENCE_DIFF
+	 * internally, so remove any anchors previously
+	 * specified.
+	 */
+	for (i = 0; i < options->anchors_nr; i++)
+		free(options->anchors[i]);
+	options->anchors_nr = 0;
+	return 0;
+}
+
 static int diff_opt_relative(const struct option *opt,
 			     const char *arg, int unset)
 {
@@ -5127,6 +5147,10 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_BIT(0, "indent-heuristic", &options->xdl_opts,
 			N_("heuristic to shift diff hunk boundaries for easy reading"),
 			XDF_INDENT_HEURISTIC),
+		OPT_CALLBACK_F(0, "patience", options, NULL,
+			       N_("generate diff using the \"patience diff\" algorithm"),
+			       PARSE_OPT_NONEG | PARSE_OPT_NOARG,
+			       diff_opt_patience),
 
 		OPT_GROUP(N_("Diff other options")),
 		OPT_CALLBACK_F(0, "relative", options, N_("<prefix>"),
@@ -5165,18 +5189,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* xdiff options */
-	if (!strcmp(arg, "--patience")) {
-		int i;
-		options->xdl_opts = DIFF_WITH_ALG(options, PATIENCE_DIFF);
-		/*
-		 * Both --patience and --anchored use PATIENCE_DIFF
-		 * internally, so remove any anchors previously
-		 * specified.
-		 */
-		for (i = 0; i < options->anchors_nr; i++)
-			free(options->anchors[i]);
-		options->anchors_nr = 0;
-	} else if (!strcmp(arg, "--histogram"))
+	if (!strcmp(arg, "--histogram"))
 		options->xdl_opts = DIFF_WITH_ALG(options, HISTOGRAM_DIFF);
 	else if ((argcount = parse_long_opt("diff-algorithm", av, &optarg))) {
 		long value = parse_algorithm_value(optarg);
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 03/20] diff-parseopt: convert --histogram
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 01/20] diff-parseopt: convert --[no-]indent-heuristic Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 02/20] diff-parseopt: convert --patience Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 04/20] diff-parseopt: convert --diff-algorithm Nguyễn Thái Ngọc Duy
                   ` (16 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/diff.c b/diff.c
index 7899c7cc06..7432702fd8 100644
--- a/diff.c
+++ b/diff.c
@@ -5151,6 +5151,9 @@ static void prep_parse_options(struct diff_options *options)
 			       N_("generate diff using the \"patience diff\" algorithm"),
 			       PARSE_OPT_NONEG | PARSE_OPT_NOARG,
 			       diff_opt_patience),
+		OPT_BITOP(0, "histogram", &options->xdl_opts,
+			  N_("generate diff using the \"histogram diff\" algorithm"),
+			  XDF_HISTOGRAM_DIFF, XDF_DIFF_ALGORITHM_MASK),
 
 		OPT_GROUP(N_("Diff other options")),
 		OPT_CALLBACK_F(0, "relative", options, N_("<prefix>"),
@@ -5189,9 +5192,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* xdiff options */
-	if (!strcmp(arg, "--histogram"))
-		options->xdl_opts = DIFF_WITH_ALG(options, HISTOGRAM_DIFF);
-	else if ((argcount = parse_long_opt("diff-algorithm", av, &optarg))) {
+	if ((argcount = parse_long_opt("diff-algorithm", av, &optarg))) {
 		long value = parse_algorithm_value(optarg);
 		if (value < 0)
 			return error("option diff-algorithm accepts \"myers\", "
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 04/20] diff-parseopt: convert --diff-algorithm
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (2 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 03/20] diff-parseopt: convert --histogram Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 05/20] diff-parseopt: convert --anchored Nguyễn Thái Ngọc Duy
                   ` (15 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/diff.c b/diff.c
index 7432702fd8..8d08795f9c 100644
--- a/diff.c
+++ b/diff.c
@@ -4891,6 +4891,24 @@ static int diff_opt_compact_summary(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_diff_algorithm(const struct option *opt,
+				   const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+	long value = parse_algorithm_value(arg);
+
+	BUG_ON_OPT_NEG(unset);
+	if (value < 0)
+		return error(_("option diff-algorithm accepts \"myers\", "
+			       "\"minimal\", \"patience\" and \"histogram\""));
+
+	/* clear out previous settings */
+	DIFF_XDL_CLR(options, NEED_MINIMAL);
+	options->xdl_opts &= ~XDF_DIFF_ALGORITHM_MASK;
+	options->xdl_opts |= value;
+	return 0;
+}
+
 static int diff_opt_dirstat(const struct option *opt,
 			    const char *arg, int unset)
 {
@@ -5154,6 +5172,9 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_BITOP(0, "histogram", &options->xdl_opts,
 			  N_("generate diff using the \"histogram diff\" algorithm"),
 			  XDF_HISTOGRAM_DIFF, XDF_DIFF_ALGORITHM_MASK),
+		OPT_CALLBACK_F(0, "diff-algorithm", options, N_("<algorithm>"),
+			       N_("choose a diff algorithm"),
+			       PARSE_OPT_NONEG, diff_opt_diff_algorithm),
 
 		OPT_GROUP(N_("Diff other options")),
 		OPT_CALLBACK_F(0, "relative", options, N_("<prefix>"),
@@ -5192,17 +5213,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* xdiff options */
-	if ((argcount = parse_long_opt("diff-algorithm", av, &optarg))) {
-		long value = parse_algorithm_value(optarg);
-		if (value < 0)
-			return error("option diff-algorithm accepts \"myers\", "
-				     "\"minimal\", \"patience\" and \"histogram\"");
-		/* clear out previous settings */
-		DIFF_XDL_CLR(options, NEED_MINIMAL);
-		options->xdl_opts &= ~XDF_DIFF_ALGORITHM_MASK;
-		options->xdl_opts |= value;
-		return argcount;
-	} else if (skip_prefix(arg, "--anchored=", &arg)) {
+	if (skip_prefix(arg, "--anchored=", &arg)) {
 		options->xdl_opts = DIFF_WITH_ALG(options, PATIENCE_DIFF);
 		ALLOC_GROW(options->anchors, options->anchors_nr + 1,
 			   options->anchors_alloc);
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 05/20] diff-parseopt: convert --anchored
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (3 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 04/20] diff-parseopt: convert --diff-algorithm Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 06/20] diff-parseopt: convert --binary Nguyễn Thái Ngọc Duy
                   ` (14 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 26 +++++++++++++++++---------
 1 file changed, 17 insertions(+), 9 deletions(-)

diff --git a/diff.c b/diff.c
index 8d08795f9c..5195526db9 100644
--- a/diff.c
+++ b/diff.c
@@ -4839,6 +4839,19 @@ static int parse_objfind_opt(struct diff_options *opt, const char *arg)
 	return 1;
 }
 
+static int diff_opt_anchored(const struct option *opt,
+			     const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	options->xdl_opts = DIFF_WITH_ALG(options, PATIENCE_DIFF);
+	ALLOC_GROW(options->anchors, options->anchors_nr + 1,
+		   options->anchors_alloc);
+	options->anchors[options->anchors_nr++] = xstrdup(arg);
+	return 0;
+}
+
 static int diff_opt_break_rewrites(const struct option *opt,
 				   const char *arg, int unset)
 {
@@ -5175,6 +5188,9 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_CALLBACK_F(0, "diff-algorithm", options, N_("<algorithm>"),
 			       N_("choose a diff algorithm"),
 			       PARSE_OPT_NONEG, diff_opt_diff_algorithm),
+		OPT_CALLBACK_F(0, "anchored", options, N_("<text>"),
+			       N_("generate diff using the \"anchored diff\" algorithm"),
+			       PARSE_OPT_NONEG, diff_opt_anchored),
 
 		OPT_GROUP(N_("Diff other options")),
 		OPT_CALLBACK_F(0, "relative", options, N_("<prefix>"),
@@ -5212,16 +5228,8 @@ int diff_opt_parse(struct diff_options *options,
 	if (ac)
 		return ac;
 
-	/* xdiff options */
-	if (skip_prefix(arg, "--anchored=", &arg)) {
-		options->xdl_opts = DIFF_WITH_ALG(options, PATIENCE_DIFF);
-		ALLOC_GROW(options->anchors, options->anchors_nr + 1,
-			   options->anchors_alloc);
-		options->anchors[options->anchors_nr++] = xstrdup(arg);
-	}
-
 	/* flags options */
-	else if (!strcmp(arg, "--binary")) {
+	if (!strcmp(arg, "--binary")) {
 		enable_patch_output(&options->output_format);
 		options->flags.binary = 1;
 	}
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 06/20] diff-parseopt: convert --binary
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (4 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 05/20] diff-parseopt: convert --anchored Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 07/20] diff-parseopt: convert --full-index Nguyễn Thái Ngọc Duy
                   ` (13 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 Documentation/diff-options.txt |  2 +-
 diff.c                         | 21 ++++++++++++++++-----
 2 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 915f2fec8b..6810c94fea 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -425,7 +425,7 @@ endif::git-format-patch[]
 
 --binary::
 	In addition to `--full-index`, output a binary diff that
-	can be applied with `git-apply`.
+	can be applied with `git-apply`. Implies `--patch`.
 
 --abbrev[=<n>]::
 	Instead of showing the full 40-byte hexadecimal object
diff --git a/diff.c b/diff.c
index 5195526db9..214728c892 100644
--- a/diff.c
+++ b/diff.c
@@ -4852,6 +4852,18 @@ static int diff_opt_anchored(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_binary(const struct option *opt,
+			   const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	BUG_ON_OPT_ARG(arg);
+	enable_patch_output(&options->output_format);
+	options->flags.binary = 1;
+	return 0;
+}
+
 static int diff_opt_break_rewrites(const struct option *opt,
 				   const char *arg, int unset)
 {
@@ -5116,6 +5128,9 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_CALLBACK_F(0, "compact-summary", options, NULL,
 			       N_("generate compact summary in diffstat"),
 			       PARSE_OPT_NOARG, diff_opt_compact_summary),
+		OPT_CALLBACK_F(0, "binary", options, NULL,
+			       N_("output a binary diff that can be applied"),
+			       PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_binary),
 		OPT_CALLBACK_F(0, "output-indicator-new",
 			       &options->output_indicators[OUTPUT_INDICATOR_NEW],
 			       N_("<char>"),
@@ -5229,11 +5244,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* flags options */
-	if (!strcmp(arg, "--binary")) {
-		enable_patch_output(&options->output_format);
-		options->flags.binary = 1;
-	}
-	else if (!strcmp(arg, "--full-index"))
+	if (!strcmp(arg, "--full-index"))
 		options->flags.full_index = 1;
 	else if (!strcmp(arg, "-a") || !strcmp(arg, "--text"))
 		options->flags.text = 1;
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 07/20] diff-parseopt: convert --full-index
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (5 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 06/20] diff-parseopt: convert --binary Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 08/20] diff-parseopt: convert -a|--text Nguyễn Thái Ngọc Duy
                   ` (12 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/diff.c b/diff.c
index 214728c892..3a13ba37fd 100644
--- a/diff.c
+++ b/diff.c
@@ -5131,6 +5131,8 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_CALLBACK_F(0, "binary", options, NULL,
 			       N_("output a binary diff that can be applied"),
 			       PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_binary),
+		OPT_BOOL(0, "full-index", &options->flags.full_index,
+			 N_("show full pre- and post-image object names on the \"index\" lines")),
 		OPT_CALLBACK_F(0, "output-indicator-new",
 			       &options->output_indicators[OUTPUT_INDICATOR_NEW],
 			       N_("<char>"),
@@ -5244,9 +5246,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* flags options */
-	if (!strcmp(arg, "--full-index"))
-		options->flags.full_index = 1;
-	else if (!strcmp(arg, "-a") || !strcmp(arg, "--text"))
+	if (!strcmp(arg, "-a") || !strcmp(arg, "--text"))
 		options->flags.text = 1;
 	else if (!strcmp(arg, "-R"))
 		options->flags.reverse_diff = 1;
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 08/20] diff-parseopt: convert -a|--text
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (6 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 07/20] diff-parseopt: convert --full-index Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 09/20] diff-parseopt: convert -R Nguyễn Thái Ngọc Duy
                   ` (11 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/diff.c b/diff.c
index 3a13ba37fd..51d22f63fa 100644
--- a/diff.c
+++ b/diff.c
@@ -5214,6 +5214,8 @@ static void prep_parse_options(struct diff_options *options)
 			       N_("when run from subdir, exclude changes outside and show relative paths"),
 			       PARSE_OPT_NONEG | PARSE_OPT_OPTARG,
 			       diff_opt_relative),
+		OPT_BOOL('a', "text", &options->flags.text,
+			 N_("treat all files as text")),
 		{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
 		  N_("Output to a specific file"),
 		  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
@@ -5246,9 +5248,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* flags options */
-	if (!strcmp(arg, "-a") || !strcmp(arg, "--text"))
-		options->flags.text = 1;
-	else if (!strcmp(arg, "-R"))
+	if (!strcmp(arg, "-R"))
 		options->flags.reverse_diff = 1;
 	else if (!strcmp(arg, "--follow"))
 		options->flags.follow_renames = 1;
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 09/20] diff-parseopt: convert -R
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (7 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 08/20] diff-parseopt: convert -a|--text Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 10/20] diff-parseopt: convert --[no-]follow Nguyễn Thái Ngọc Duy
                   ` (10 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/diff.c b/diff.c
index 51d22f63fa..689dc11684 100644
--- a/diff.c
+++ b/diff.c
@@ -5216,6 +5216,8 @@ static void prep_parse_options(struct diff_options *options)
 			       diff_opt_relative),
 		OPT_BOOL('a', "text", &options->flags.text,
 			 N_("treat all files as text")),
+		OPT_BOOL('R', NULL, &options->flags.reverse_diff,
+			 N_("swap two inputs, reverse the diff")),
 		{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
 		  N_("Output to a specific file"),
 		  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
@@ -5248,9 +5250,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* flags options */
-	if (!strcmp(arg, "-R"))
-		options->flags.reverse_diff = 1;
-	else if (!strcmp(arg, "--follow"))
+	if (!strcmp(arg, "--follow"))
 		options->flags.follow_renames = 1;
 	else if (!strcmp(arg, "--no-follow")) {
 		options->flags.follow_renames = 0;
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 10/20] diff-parseopt: convert --[no-]follow
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (8 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 09/20] diff-parseopt: convert -R Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 11/20] diff-parseopt: convert --[no-]color Nguyễn Thái Ngọc Duy
                   ` (9 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/diff.c b/diff.c
index 689dc11684..ad813ea418 100644
--- a/diff.c
+++ b/diff.c
@@ -4986,6 +4986,21 @@ static int diff_opt_find_renames(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_follow(const struct option *opt,
+			   const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_ARG(arg);
+	if (unset) {
+		options->flags.follow_renames = 0;
+		options->flags.default_follow_renames = 0;
+	} else {
+		options->flags.follow_renames = 1;
+	}
+	return 0;
+}
+
 static enum parse_opt_result diff_opt_output(struct parse_opt_ctx_t *ctx,
 					     const struct option *opt,
 					     const char *arg, int unset)
@@ -5172,6 +5187,9 @@ static void prep_parse_options(struct diff_options *options)
 			      0, PARSE_OPT_NONEG),
 		OPT_BOOL(0, "rename-empty", &options->flags.rename_empty,
 			 N_("use empty blobs as rename source")),
+		OPT_CALLBACK_F(0, "follow", options, NULL,
+			       N_("continue listing the history of a file beyond renames"),
+			       PARSE_OPT_NOARG, diff_opt_follow),
 
 		OPT_GROUP(N_("Diff algorithm options")),
 		OPT_BIT(0, "minimal", &options->xdl_opts,
@@ -5250,12 +5268,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* flags options */
-	if (!strcmp(arg, "--follow"))
-		options->flags.follow_renames = 1;
-	else if (!strcmp(arg, "--no-follow")) {
-		options->flags.follow_renames = 0;
-		options->flags.default_follow_renames = 0;
-	} else if (skip_to_optional_arg_default(arg, "--color", &arg, "always")) {
+	if (skip_to_optional_arg_default(arg, "--color", &arg, "always")) {
 		int value = git_config_colorbool(NULL, arg);
 		if (value < 0)
 			return error("option `color' expects \"always\", \"auto\", or \"never\"");
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 11/20] diff-parseopt: convert --[no-]color
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (9 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 10/20] diff-parseopt: convert --[no-]follow Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 12/20] diff-parseopt: convert --word-diff Nguyễn Thái Ngọc Duy
                   ` (8 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/diff.c b/diff.c
index ad813ea418..bb36d507ec 100644
--- a/diff.c
+++ b/diff.c
@@ -5148,6 +5148,8 @@ static void prep_parse_options(struct diff_options *options)
 			       PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_binary),
 		OPT_BOOL(0, "full-index", &options->flags.full_index,
 			 N_("show full pre- and post-image object names on the \"index\" lines")),
+		OPT_COLOR_FLAG(0, "color", &options->use_color,
+			       N_("show colored diff")),
 		OPT_CALLBACK_F(0, "output-indicator-new",
 			       &options->output_indicators[OUTPUT_INDICATOR_NEW],
 			       N_("<char>"),
@@ -5268,15 +5270,7 @@ int diff_opt_parse(struct diff_options *options,
 		return ac;
 
 	/* flags options */
-	if (skip_to_optional_arg_default(arg, "--color", &arg, "always")) {
-		int value = git_config_colorbool(NULL, arg);
-		if (value < 0)
-			return error("option `color' expects \"always\", \"auto\", or \"never\"");
-		options->use_color = value;
-	}
-	else if (!strcmp(arg, "--no-color"))
-		options->use_color = 0;
-	else if (!strcmp(arg, "--color-moved")) {
+	if (!strcmp(arg, "--color-moved")) {
 		if (diff_color_moved_default)
 			options->color_moved = diff_color_moved_default;
 		if (options->color_moved == COLOR_MOVED_NO)
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 12/20] diff-parseopt: convert --word-diff
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (10 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 11/20] diff-parseopt: convert --[no-]color Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 13/20] diff-parseopt: convert --word-diff-regex Nguyễn Thái Ngọc Duy
                   ` (7 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 47 +++++++++++++++++++++++++++++------------------
 1 file changed, 29 insertions(+), 18 deletions(-)

diff --git a/diff.c b/diff.c
index bb36d507ec..14c057f3df 100644
--- a/diff.c
+++ b/diff.c
@@ -5066,6 +5066,32 @@ static int diff_opt_unified(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_word_diff(const struct option *opt,
+			      const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	if (arg) {
+		if (!strcmp(arg, "plain"))
+			options->word_diff = DIFF_WORDS_PLAIN;
+		else if (!strcmp(arg, "color")) {
+			options->use_color = 1;
+			options->word_diff = DIFF_WORDS_COLOR;
+		}
+		else if (!strcmp(arg, "porcelain"))
+			options->word_diff = DIFF_WORDS_PORCELAIN;
+		else if (!strcmp(arg, "none"))
+			options->word_diff = DIFF_WORDS_NONE;
+		else
+			return error(_("bad --word-diff argument: %s"), arg);
+	} else {
+		if (options->word_diff == DIFF_WORDS_NONE)
+			options->word_diff = DIFF_WORDS_PLAIN;
+	}
+	return 0;
+}
+
 static void prep_parse_options(struct diff_options *options)
 {
 	struct option parseopts[] = {
@@ -5228,6 +5254,9 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_CALLBACK_F(0, "anchored", options, N_("<text>"),
 			       N_("generate diff using the \"anchored diff\" algorithm"),
 			       PARSE_OPT_NONEG, diff_opt_anchored),
+		OPT_CALLBACK_F(0, "word-diff", options, N_("<mode>"),
+			       N_("show word diff, using <mode> to delimit changed words"),
+			       PARSE_OPT_NONEG | PARSE_OPT_OPTARG, diff_opt_word_diff),
 
 		OPT_GROUP(N_("Diff other options")),
 		OPT_CALLBACK_F(0, "relative", options, N_("<prefix>"),
@@ -5291,24 +5320,6 @@ int diff_opt_parse(struct diff_options *options,
 		options->use_color = 1;
 		options->word_diff = DIFF_WORDS_COLOR;
 	}
-	else if (!strcmp(arg, "--word-diff")) {
-		if (options->word_diff == DIFF_WORDS_NONE)
-			options->word_diff = DIFF_WORDS_PLAIN;
-	}
-	else if (skip_prefix(arg, "--word-diff=", &arg)) {
-		if (!strcmp(arg, "plain"))
-			options->word_diff = DIFF_WORDS_PLAIN;
-		else if (!strcmp(arg, "color")) {
-			options->use_color = 1;
-			options->word_diff = DIFF_WORDS_COLOR;
-		}
-		else if (!strcmp(arg, "porcelain"))
-			options->word_diff = DIFF_WORDS_PORCELAIN;
-		else if (!strcmp(arg, "none"))
-			options->word_diff = DIFF_WORDS_NONE;
-		else
-			die("bad --word-diff argument: %s", arg);
-	}
 	else if ((argcount = parse_long_opt("word-diff-regex", av, &optarg))) {
 		if (options->word_diff == DIFF_WORDS_NONE)
 			options->word_diff = DIFF_WORDS_PLAIN;
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 13/20] diff-parseopt: convert --word-diff-regex
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (11 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 12/20] diff-parseopt: convert --word-diff Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 14/20] diff-parseopt: convert --color-words Nguyễn Thái Ngọc Duy
                   ` (6 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

diff --git a/diff.c b/diff.c
index 14c057f3df..634981723b 100644
--- a/diff.c
+++ b/diff.c
@@ -5092,6 +5092,18 @@ static int diff_opt_word_diff(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_word_diff_regex(const struct option *opt,
+				    const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	if (options->word_diff == DIFF_WORDS_NONE)
+		options->word_diff = DIFF_WORDS_PLAIN;
+	options->word_regex = arg;
+	return 0;
+}
+
 static void prep_parse_options(struct diff_options *options)
 {
 	struct option parseopts[] = {
@@ -5257,6 +5269,9 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_CALLBACK_F(0, "word-diff", options, N_("<mode>"),
 			       N_("show word diff, using <mode> to delimit changed words"),
 			       PARSE_OPT_NONEG | PARSE_OPT_OPTARG, diff_opt_word_diff),
+		OPT_CALLBACK_F(0, "word-diff-regex", options, N_("<regex>"),
+			       N_("use <regex> to decide what a word is"),
+			       PARSE_OPT_NONEG, diff_opt_word_diff_regex),
 
 		OPT_GROUP(N_("Diff other options")),
 		OPT_CALLBACK_F(0, "relative", options, N_("<prefix>"),
@@ -5320,12 +5335,6 @@ int diff_opt_parse(struct diff_options *options,
 		options->use_color = 1;
 		options->word_diff = DIFF_WORDS_COLOR;
 	}
-	else if ((argcount = parse_long_opt("word-diff-regex", av, &optarg))) {
-		if (options->word_diff == DIFF_WORDS_NONE)
-			options->word_diff = DIFF_WORDS_PLAIN;
-		options->word_regex = optarg;
-		return argcount;
-	}
 	else if (!strcmp(arg, "--exit-code"))
 		options->flags.exit_with_status = 1;
 	else if (!strcmp(arg, "--quiet"))
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 14/20] diff-parseopt: convert --color-words
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (12 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 13/20] diff-parseopt: convert --word-diff-regex Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 15/20] diff-parseopt: convert --exit-code Nguyễn Thái Ngọc Duy
                   ` (5 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/diff.c b/diff.c
index 634981723b..5180c2f5a9 100644
--- a/diff.c
+++ b/diff.c
@@ -4901,6 +4901,18 @@ static int diff_opt_char(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_color_words(const struct option *opt,
+				const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	options->use_color = 1;
+	options->word_diff = DIFF_WORDS_COLOR;
+	options->word_regex = arg;
+	return 0;
+}
+
 static int diff_opt_compact_summary(const struct option *opt,
 				    const char *arg, int unset)
 {
@@ -5272,6 +5284,9 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_CALLBACK_F(0, "word-diff-regex", options, N_("<regex>"),
 			       N_("use <regex> to decide what a word is"),
 			       PARSE_OPT_NONEG, diff_opt_word_diff_regex),
+		OPT_CALLBACK_F(0, "color-words", options, N_("<regex>"),
+			       N_("equivalent to --word-diff=color --word-diff-regex=<regex>"),
+			       PARSE_OPT_NONEG | PARSE_OPT_OPTARG, diff_opt_color_words),
 
 		OPT_GROUP(N_("Diff other options")),
 		OPT_CALLBACK_F(0, "relative", options, N_("<prefix>"),
@@ -5331,11 +5346,7 @@ int diff_opt_parse(struct diff_options *options,
 		if (cm & COLOR_MOVED_WS_ERROR)
 			return -1;
 		options->color_moved_ws_handling = cm;
-	} else if (skip_to_optional_arg_default(arg, "--color-words", &options->word_regex, NULL)) {
-		options->use_color = 1;
-		options->word_diff = DIFF_WORDS_COLOR;
-	}
-	else if (!strcmp(arg, "--exit-code"))
+	} else if (!strcmp(arg, "--exit-code"))
 		options->flags.exit_with_status = 1;
 	else if (!strcmp(arg, "--quiet"))
 		options->flags.quick = 1;
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 15/20] diff-parseopt: convert --exit-code
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (13 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 14/20] diff-parseopt: convert --color-words Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 16/20] diff-parseopt: convert --quiet Nguyễn Thái Ngọc Duy
                   ` (4 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/diff.c b/diff.c
index 5180c2f5a9..3f80e06de5 100644
--- a/diff.c
+++ b/diff.c
@@ -5297,6 +5297,8 @@ static void prep_parse_options(struct diff_options *options)
 			 N_("treat all files as text")),
 		OPT_BOOL('R', NULL, &options->flags.reverse_diff,
 			 N_("swap two inputs, reverse the diff")),
+		OPT_BOOL(0, "exit-code", &options->flags.exit_with_status,
+			 N_("exit with 1 if there were differences, 0 otherwise")),
 		{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
 		  N_("Output to a specific file"),
 		  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
@@ -5346,9 +5348,7 @@ int diff_opt_parse(struct diff_options *options,
 		if (cm & COLOR_MOVED_WS_ERROR)
 			return -1;
 		options->color_moved_ws_handling = cm;
-	} else if (!strcmp(arg, "--exit-code"))
-		options->flags.exit_with_status = 1;
-	else if (!strcmp(arg, "--quiet"))
+	} else if (!strcmp(arg, "--quiet"))
 		options->flags.quick = 1;
 	else if (!strcmp(arg, "--ext-diff"))
 		options->flags.allow_external = 1;
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 16/20] diff-parseopt: convert --quiet
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (14 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 15/20] diff-parseopt: convert --exit-code Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 15:42   ` Eric Sunshine
  2019-03-05 12:30 ` [PATCH 17/20] diff-parseopt: convert --ext-diff Nguyễn Thái Ngọc Duy
                   ` (3 subsequent siblings)
  19 siblings, 1 reply; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/diff.c b/diff.c
index 3f80e06de5..bd15269346 100644
--- a/diff.c
+++ b/diff.c
@@ -5299,6 +5299,8 @@ static void prep_parse_options(struct diff_options *options)
 			 N_("swap two inputs, reverse the diff")),
 		OPT_BOOL(0, "exit-code", &options->flags.exit_with_status,
 			 N_("exit with 1 if there were differences, 0 otherwise")),
+		OPT_BOOL(0, "quiet", &options->flags.quick,
+			 N_("disable all output of the program")),
 		{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
 		  N_("Output to a specific file"),
 		  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
@@ -5348,9 +5350,7 @@ int diff_opt_parse(struct diff_options *options,
 		if (cm & COLOR_MOVED_WS_ERROR)
 			return -1;
 		options->color_moved_ws_handling = cm;
-	} else if (!strcmp(arg, "--quiet"))
-		options->flags.quick = 1;
-	else if (!strcmp(arg, "--ext-diff"))
+	} else if (!strcmp(arg, "--ext-diff"))
 		options->flags.allow_external = 1;
 	else if (!strcmp(arg, "--no-ext-diff"))
 		options->flags.allow_external = 0;
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 17/20] diff-parseopt: convert --ext-diff
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (15 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 16/20] diff-parseopt: convert --quiet Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 18/20] diff-parseopt: convert --textconv Nguyễn Thái Ngọc Duy
                   ` (2 subsequent siblings)
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/diff.c b/diff.c
index bd15269346..b460fa010b 100644
--- a/diff.c
+++ b/diff.c
@@ -5301,6 +5301,8 @@ static void prep_parse_options(struct diff_options *options)
 			 N_("exit with 1 if there were differences, 0 otherwise")),
 		OPT_BOOL(0, "quiet", &options->flags.quick,
 			 N_("disable all output of the program")),
+		OPT_BOOL(0, "ext-diff", &options->flags.allow_external,
+			 N_("allow an external diff helper to be executed")),
 		{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
 		  N_("Output to a specific file"),
 		  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
@@ -5350,11 +5352,7 @@ int diff_opt_parse(struct diff_options *options,
 		if (cm & COLOR_MOVED_WS_ERROR)
 			return -1;
 		options->color_moved_ws_handling = cm;
-	} else if (!strcmp(arg, "--ext-diff"))
-		options->flags.allow_external = 1;
-	else if (!strcmp(arg, "--no-ext-diff"))
-		options->flags.allow_external = 0;
-	else if (!strcmp(arg, "--textconv")) {
+	} else if (!strcmp(arg, "--textconv")) {
 		options->flags.allow_textconv = 1;
 		options->flags.textconv_set_via_cmdline = 1;
 	} else if (!strcmp(arg, "--no-textconv"))
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 18/20] diff-parseopt: convert --textconv
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (16 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 17/20] diff-parseopt: convert --ext-diff Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 19/20] diff-parseopt: convert --ignore-submodules Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 20/20] diff-parseopt: convert --submodule Nguyễn Thái Ngọc Duy
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 25 +++++++++++++++++++------
 1 file changed, 19 insertions(+), 6 deletions(-)

diff --git a/diff.c b/diff.c
index b460fa010b..a27bca527d 100644
--- a/diff.c
+++ b/diff.c
@@ -5062,6 +5062,21 @@ static int diff_opt_relative(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_textconv(const struct option *opt,
+			     const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_ARG(arg);
+	if (unset) {
+		options->flags.allow_textconv = 0;
+	} else {
+		options->flags.allow_textconv = 1;
+		options->flags.textconv_set_via_cmdline = 1;
+	}
+	return 0;
+}
+
 static int diff_opt_unified(const struct option *opt,
 			    const char *arg, int unset)
 {
@@ -5303,6 +5318,9 @@ static void prep_parse_options(struct diff_options *options)
 			 N_("disable all output of the program")),
 		OPT_BOOL(0, "ext-diff", &options->flags.allow_external,
 			 N_("allow an external diff helper to be executed")),
+		OPT_CALLBACK_F(0, "textconv", options, NULL,
+			       N_("run external text conversion filters when comparing binary files"),
+			       PARSE_OPT_NOARG, diff_opt_textconv),
 		{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
 		  N_("Output to a specific file"),
 		  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
@@ -5352,12 +5370,7 @@ int diff_opt_parse(struct diff_options *options,
 		if (cm & COLOR_MOVED_WS_ERROR)
 			return -1;
 		options->color_moved_ws_handling = cm;
-	} else if (!strcmp(arg, "--textconv")) {
-		options->flags.allow_textconv = 1;
-		options->flags.textconv_set_via_cmdline = 1;
-	} else if (!strcmp(arg, "--no-textconv"))
-		options->flags.allow_textconv = 0;
-	else if (skip_to_optional_arg_default(arg, "--ignore-submodules", &arg, "all")) {
+	} else if (skip_to_optional_arg_default(arg, "--ignore-submodules", &arg, "all")) {
 		options->flags.override_submodule_config = 1;
 		handle_ignore_submodules_arg(options, arg);
 	} else if (skip_to_optional_arg_default(arg, "--submodule", &arg, "log"))
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 19/20] diff-parseopt: convert --ignore-submodules
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (17 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 18/20] diff-parseopt: convert --textconv Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  2019-03-05 12:30 ` [PATCH 20/20] diff-parseopt: convert --submodule Nguyễn Thái Ngọc Duy
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 20 +++++++++++++++++---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/diff.c b/diff.c
index a27bca527d..6fd6106963 100644
--- a/diff.c
+++ b/diff.c
@@ -5013,6 +5013,19 @@ static int diff_opt_follow(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_ignore_submodules(const struct option *opt,
+				      const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	if (!arg)
+		arg = "all";
+	options->flags.override_submodule_config = 1;
+	handle_ignore_submodules_arg(options, arg);
+	return 0;
+}
+
 static enum parse_opt_result diff_opt_output(struct parse_opt_ctx_t *ctx,
 					     const struct option *opt,
 					     const char *arg, int unset)
@@ -5321,6 +5334,10 @@ static void prep_parse_options(struct diff_options *options)
 		OPT_CALLBACK_F(0, "textconv", options, NULL,
 			       N_("run external text conversion filters when comparing binary files"),
 			       PARSE_OPT_NOARG, diff_opt_textconv),
+		OPT_CALLBACK_F(0, "ignore-submodules", options, N_("<when>"),
+			       N_("ignore changes to submodules in the diff generation"),
+			       PARSE_OPT_NONEG | PARSE_OPT_OPTARG,
+			       diff_opt_ignore_submodules),
 		{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
 		  N_("Output to a specific file"),
 		  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
@@ -5370,9 +5387,6 @@ int diff_opt_parse(struct diff_options *options,
 		if (cm & COLOR_MOVED_WS_ERROR)
 			return -1;
 		options->color_moved_ws_handling = cm;
-	} else if (skip_to_optional_arg_default(arg, "--ignore-submodules", &arg, "all")) {
-		options->flags.override_submodule_config = 1;
-		handle_ignore_submodules_arg(options, arg);
 	} else if (skip_to_optional_arg_default(arg, "--submodule", &arg, "log"))
 		return parse_submodule_opt(options, arg);
 	else if (skip_prefix(arg, "--ws-error-highlight=", &arg))
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH 20/20] diff-parseopt: convert --submodule
  2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
                   ` (18 preceding siblings ...)
  2019-03-05 12:30 ` [PATCH 19/20] diff-parseopt: convert --ignore-submodules Nguyễn Thái Ngọc Duy
@ 2019-03-05 12:30 ` Nguyễn Thái Ngọc Duy
  19 siblings, 0 replies; 23+ messages in thread
From: Nguyễn Thái Ngọc Duy @ 2019-03-05 12:30 UTC (permalink / raw)
  To: git; +Cc: Junio C Hamano, Nguyễn Thái Ngọc Duy

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 diff.c | 30 +++++++++++++++++++-----------
 1 file changed, 19 insertions(+), 11 deletions(-)

diff --git a/diff.c b/diff.c
index 6fd6106963..ce118bb326 100644
--- a/diff.c
+++ b/diff.c
@@ -4721,14 +4721,6 @@ static int parse_dirstat_opt(struct diff_options *options, const char *params)
 	return 1;
 }
 
-static int parse_submodule_opt(struct diff_options *options, const char *value)
-{
-	if (parse_submodule_params(options, value))
-		die(_("Failed to parse --submodule option parameter: '%s'"),
-			value);
-	return 1;
-}
-
 static const char diff_status_letters[] = {
 	DIFF_STATUS_ADDED,
 	DIFF_STATUS_COPIED,
@@ -5075,6 +5067,20 @@ static int diff_opt_relative(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_submodule(const struct option *opt,
+			      const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	if (!arg)
+		arg = "log";
+	if (parse_submodule_params(options, arg))
+		return error(_("failed to parse --submodule option parameter: '%s'"),
+			     arg);
+	return 0;
+}
+
 static int diff_opt_textconv(const struct option *opt,
 			     const char *arg, int unset)
 {
@@ -5338,6 +5344,10 @@ static void prep_parse_options(struct diff_options *options)
 			       N_("ignore changes to submodules in the diff generation"),
 			       PARSE_OPT_NONEG | PARSE_OPT_OPTARG,
 			       diff_opt_ignore_submodules),
+		OPT_CALLBACK_F(0, "submodule", options, N_("<format>"),
+			       N_("specify how differences in submodules are shown"),
+			       PARSE_OPT_NONEG | PARSE_OPT_OPTARG,
+			       diff_opt_submodule),
 		{ OPTION_CALLBACK, 0, "output", options, N_("<file>"),
 		  N_("Output to a specific file"),
 		  PARSE_OPT_NONEG, NULL, 0, diff_opt_output },
@@ -5387,9 +5397,7 @@ int diff_opt_parse(struct diff_options *options,
 		if (cm & COLOR_MOVED_WS_ERROR)
 			return -1;
 		options->color_moved_ws_handling = cm;
-	} else if (skip_to_optional_arg_default(arg, "--submodule", &arg, "log"))
-		return parse_submodule_opt(options, arg);
-	else if (skip_prefix(arg, "--ws-error-highlight=", &arg))
+	} else if (skip_prefix(arg, "--ws-error-highlight=", &arg))
 		return parse_ws_error_highlight_opt(options, arg);
 	else if (!strcmp(arg, "--ita-invisible-in-index"))
 		options->ita_invisible_in_index = 1;
-- 
2.21.0.rc1.337.gdf7f8d0522


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH 16/20] diff-parseopt: convert --quiet
  2019-03-05 12:30 ` [PATCH 16/20] diff-parseopt: convert --quiet Nguyễn Thái Ngọc Duy
@ 2019-03-05 15:42   ` Eric Sunshine
  2019-03-06  9:25     ` Duy Nguyen
  0 siblings, 1 reply; 23+ messages in thread
From: Eric Sunshine @ 2019-03-05 15:42 UTC (permalink / raw)
  To: Nguyễn Thái Ngọc Duy; +Cc: Git List, Junio C Hamano

On Tue, Mar 5, 2019 at 7:32 AM Nguyễn Thái Ngọc Duy <pclouds@gmail.com> wrote:
> diff --git a/diff.c b/diff.c
> @@ -5299,6 +5299,8 @@ static void prep_parse_options(struct diff_options *options)
> +               OPT_BOOL(0, "quiet", &options->flags.quick,
> +                        N_("disable all output of the program")),

As a reviewer, I was wondering why you didn't use OPT__QUIET() here, but...

> @@ -5348,9 +5350,7 @@ int diff_opt_parse(struct diff_options *options,
> -       } else if (!strcmp(arg, "--quiet"))
> -               options->flags.quick = 1;
> -       else if (!strcmp(arg, "--ext-diff"))

I guess the reason is that flags.quick isn't necessarily about
verbosity/quietness.

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH 16/20] diff-parseopt: convert --quiet
  2019-03-05 15:42   ` Eric Sunshine
@ 2019-03-06  9:25     ` Duy Nguyen
  0 siblings, 0 replies; 23+ messages in thread
From: Duy Nguyen @ 2019-03-06  9:25 UTC (permalink / raw)
  To: Eric Sunshine; +Cc: Git List, Junio C Hamano

On Tue, Mar 5, 2019 at 10:42 PM Eric Sunshine <sunshine@sunshineco.com> wrote:
>
> On Tue, Mar 5, 2019 at 7:32 AM Nguyễn Thái Ngọc Duy <pclouds@gmail.com> wrote:
> > diff --git a/diff.c b/diff.c
> > @@ -5299,6 +5299,8 @@ static void prep_parse_options(struct diff_options *options)
> > +               OPT_BOOL(0, "quiet", &options->flags.quick,
> > +                        N_("disable all output of the program")),
>
> As a reviewer, I was wondering why you didn't use OPT__QUIET() here, but...

It probably just didn't occur to me. After doing a couple conversions,
you kinda get in a routine and forget to question if your choice is
the right one.

> > @@ -5348,9 +5350,7 @@ int diff_opt_parse(struct diff_options *options,
> > -       } else if (!strcmp(arg, "--quiet"))
> > -               options->flags.quick = 1;
> > -       else if (!strcmp(arg, "--ext-diff"))
>
> I guess the reason is that flags.quick isn't necessarily about
> verbosity/quietness.

Also OPT__QUIET() adds the short option -q. Adding that, even if
helpful, should be done separately.
-- 
Duy

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2019-03-06  9:25 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-05 12:30 [PATCH 00/20] nd/diff-parseopt part 3 Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 01/20] diff-parseopt: convert --[no-]indent-heuristic Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 02/20] diff-parseopt: convert --patience Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 03/20] diff-parseopt: convert --histogram Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 04/20] diff-parseopt: convert --diff-algorithm Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 05/20] diff-parseopt: convert --anchored Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 06/20] diff-parseopt: convert --binary Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 07/20] diff-parseopt: convert --full-index Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 08/20] diff-parseopt: convert -a|--text Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 09/20] diff-parseopt: convert -R Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 10/20] diff-parseopt: convert --[no-]follow Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 11/20] diff-parseopt: convert --[no-]color Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 12/20] diff-parseopt: convert --word-diff Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 13/20] diff-parseopt: convert --word-diff-regex Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 14/20] diff-parseopt: convert --color-words Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 15/20] diff-parseopt: convert --exit-code Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 16/20] diff-parseopt: convert --quiet Nguyễn Thái Ngọc Duy
2019-03-05 15:42   ` Eric Sunshine
2019-03-06  9:25     ` Duy Nguyen
2019-03-05 12:30 ` [PATCH 17/20] diff-parseopt: convert --ext-diff Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 18/20] diff-parseopt: convert --textconv Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 19/20] diff-parseopt: convert --ignore-submodules Nguyễn Thái Ngọc Duy
2019-03-05 12:30 ` [PATCH 20/20] diff-parseopt: convert --submodule Nguyễn Thái Ngọc Duy

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.