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

[PATCH] fixup! diff: do not show submodule with untracked files as "-dirty"

From
PWPhillip Wood <phillip.wood123@gmail.com>
Date
Oct 15, 2020, 09:26 UTC
Message-ID
<2d51c999-61cc-d490-46c9-0fac19aff066@gmail.com>
In-Reply-To
<3c0bf417-b3d5-b615-c605-49a5d8be4e06@gmail.com>
Simplify checking if we've already set the flags for ignoring submodules
---
 builtin/checkout.c |  1 -
 diff.c             | 12 +++++-------
 diff.h             |  7 +------
 submodule.c        |  5 ++---
 wt-status.c        |  3 ---
 5 files changed, 8 insertions(+), 20 deletions(-)
diff --git a/builtin/checkout.c b/builtin/checkout.c
index 428201380e..0951f8fee5 100644
--- a/builtin/checkout.c
+++ b/builtin/checkout.c
@@ -1095,7 +1095,6 @@ static int git_checkout_config(const char *var, const char *value, void *cb)
 {
 	if (!strcmp(var, "diff.ignoresubmodules")) {
 		struct checkout_opts *opts = cb;
-		diff_ignore_submodule_config =1;
 		handle_ignore_submodules_arg(&opts->diff_options, value);
 		return 0;
 	}
diff --git a/diff.c b/diff.c
index 6c9d28d363..93bbb57f88 100644
--- a/diff.c
+++ b/diff.c
@@ -51,7 +51,6 @@ static int diff_no_prefix;
 static int diff_relative;
 static int diff_stat_graph_width;
 static int diff_dirstat_permille_default = 30;
-int diff_ignore_submodule_config = 0;
 static struct diff_options default_diff_options;
 static long diff_algorithm;
 static unsigned ws_error_highlight_default = WSEH_NEW;
@@ -403,10 +402,8 @@ int git_diff_ui_config(const char *var, const char *value, void *cb)
 	if (!strcmp(var, "diff.orderfile"))
 		return git_config_pathname(&diff_order_file_cfg, var, value);
 
-	if (!strcmp(var, "diff.ignoresubmodules")) {
-		diff_ignore_submodule_config =1;
+	if (!strcmp(var, "diff.ignoresubmodules"))
 		handle_ignore_submodules_arg(&default_diff_options, value);
-	}
 
 	if (!strcmp(var, "diff.submodule")) {
 		if (parse_submodule_params(&default_diff_options, value))
@@ -4598,8 +4595,10 @@ void repo_diff_setup(struct repository *r, struct diff_options *options)
 
 	options->color_moved = diff_color_moved_default;
 	options->color_moved_ws_handling = diff_color_moved_ws_default;
-	if(!diff_ignore_submodule_config)
-		handle_ignore_submodules_arg(options, "untracked");
+
+	if(!options->flags.ignore_submodule_set)
+		options->flags.ignore_untracked_in_submodules = 1;
+
 	prep_parse_options(options);
 }
 
@@ -5142,7 +5141,6 @@ static int diff_opt_ignore_submodules(const struct option *opt,
 	if (!arg)
 		arg = "all";
 	options->flags.override_submodule_config = 1;
-	diff_ignore_submodule_config =1;
 	handle_ignore_submodules_arg(options, arg);
 	return 0;
 }
diff --git a/diff.h b/diff.h
index 9bfce084d8..2f5612ff7d 100644
--- a/diff.h
+++ b/diff.h
@@ -180,6 +180,7 @@ struct diff_flags {
 	unsigned ignore_untracked_in_submodules;
 	unsigned ignore_dirty_submodules;
 	unsigned override_submodule_config;
+	unsigned ignore_submodule_set;
 	unsigned dirstat_by_line;
 	unsigned funccontext;
 	unsigned default_follow_renames;
@@ -556,12 +557,6 @@ int diff_queue_is_empty(void);
 void diff_flush(struct diff_options*);
 void diff_warn_rename_limit(const char *varname, int needed, int degraded_cc);
 
-/* 
- * This is for keeping a track whether ignoreSubmodules
- * is  present in user defined config or not.
- */
-extern int diff_ignore_submodule_config;
-
 /* diff-raw status letters */
 #define DIFF_STATUS_ADDED		'A'
 #define DIFF_STATUS_COPIED		'C'
diff --git a/submodule.c b/submodule.c
index a526c96ce2..8f6227c993 100644
--- a/submodule.c
+++ b/submodule.c
@@ -198,10 +198,8 @@ void set_diffopt_flags_from_submodule_config(struct diff_options *diffopt,
 			ignore = submodule->ignore;
 		free(key);
 
-		if (ignore){
-			diff_ignore_submodule_config =1;
+		if (ignore)
 			handle_ignore_submodules_arg(diffopt, ignore);
-		}
 		else if (is_gitmodules_unmerged(the_repository->index))
 			diffopt->flags.ignore_submodules = 1;
 	}
@@ -422,6 +420,7 @@ const char *submodule_strategy_to_string(const struct submodule_update_strategy
 void handle_ignore_submodules_arg(struct diff_options *diffopt,
 				  const char *arg)
 {
+	diffopt->flags.ignore_submodule_set = 1;
 	diffopt->flags.ignore_submodules = 0;
 	diffopt->flags.ignore_untracked_in_submodules = 0;
 	diffopt->flags.ignore_dirty_submodules = 0;
diff --git a/wt-status.c b/wt-status.c
index 791af9321a..7074bbdd53 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -605,7 +605,6 @@ static void wt_status_collect_changes_worktree(struct wt_status *s)
 		rev.diffopt.flags.ignore_untracked_in_submodules = 1;
 	if (s->ignore_submodule_arg) {
 		rev.diffopt.flags.override_submodule_config = 1;
-		diff_ignore_submodule_config =1;
 		handle_ignore_submodules_arg(&rev.diffopt, s->ignore_submodule_arg);
 	}
 	rev.diffopt.format_callback = wt_status_collect_changed_cb;
@@ -630,7 +629,6 @@ static void wt_status_collect_changes_index(struct wt_status *s)
 	rev.diffopt.flags.override_submodule_config = 1;
 	rev.diffopt.ita_invisible_in_index = 1;
 	if (s->ignore_submodule_arg) {
-		diff_ignore_submodule_config =1;
 		handle_ignore_submodules_arg(&rev.diffopt, s->ignore_submodule_arg);
 	} else {
 		/*
@@ -641,7 +639,6 @@ static void wt_status_collect_changes_index(struct wt_status *s)
 		 * shown any submodules she manually added (and which are
 		 * staged to be committed), which would be really confusing.
 		 */
-		diff_ignore_submodule_config =1;
 		handle_ignore_submodules_arg(&rev.diffopt, "dirty");
 	}
 
-- 
2.25.1.551.gd3318bf0d3.dirty
Previous: Phillip WoodNext: Sangeeta NB
Message 11 of 17 in “[Outreachy] Introduction”
  1. Sangeeta NBOct 7, 2020
  2. Phillip WoodOct 8, 2020
  3. Sangeeta NBOct 9, 2020
  4. Phillip WoodOct 9, 2020
  5. Sangeeta NBOct 11, 2020
  6. Phillip WoodOct 12, 2020
  7. Kaartic SivaraamOct 12, 2020
  8. Junio C HamanoOct 12, 2020
  9. Sangeeta NBOct 14, 2020
  10. Phillip WoodOct 15, 2020
  11. fixup! diff: do not show submodule with untracked files as "-dirty"Phillip Wood, Oct 15, 2020
  12. Sangeeta NBOct 15, 2020
  13. Phillip WoodOct 15, 2020
  14. Sangeeta NBOct 15, 2020
  15. Phillip WoodOct 15, 2020
  16. Sangeeta NBOct 16, 2020
  17. Phillip WoodOct 16, 2020

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.