When 'submodule.actionOnLabel' is set, submodules which are selected by a label will be inspected in status and diff. If a submodule is not selected, it is ignored. Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- submodule.c | 15 +++++++++++++++ t/t7400-submodule-basic.sh | 13 +++++++++++++ 2 files changed, 28 insertions(+) diff --git a/submodule.c b/submodule.c index 458189c..86c0a49 100644 --- a/submodule.c +++ b/submodule.c @@ -20,6 +20,8 @@ static struct string_list changed_submodule_paths; static int initialized_fetch_ref_tips; static struct sha1_array ref_tips_before_fetch; static struct sha1_array ref_tips_after_fetch; +static struct string_list action_labels = STRING_LIST_INIT_DUP; +static int use_action_labels; /* * The following flag is set if the .gitmodules file is unmerged. We then @@ -161,10 +163,20 @@ void set_diffopt_flags_from_submodule_config(struct diff_options *diffopt, { const struct submodule *submodule = submodule_from_path(null_sha1, path); if (submodule) { + char *ignoreMode; if (submodule->ignore) handle_ignore_submodules_arg(diffopt, submodule->ignore); else if (gitmodules_is_unmerged) DIFF_OPT_SET(diffopt, IGNORE_SUBMODULES); + + if (!use_action_labels) + return; + + if (submodule_applicable_by_labels(&action_labels, submodule)) + ignoreMode = "none"; + else + ignoreMode = "all"; + handle_ignore_submodules_arg(diffopt, ignoreMode); } } @@ -175,6 +187,9 @@ int submodule_config(const char *var, const char *value, void *cb) if (parallel_jobs < 0) die(_("negative values not allowed for submodule.fetchJobs")); return 0; + } else if (!strcmp(var, "submodule.actiononlabel")) { + use_action_labels = 1; + string_list_append(&action_labels, value); } else if (starts_with(var, "submodule.")) return parse_submodule_config_option(var, value); else if (!strcmp(var, "fetch.recursesubmodules")) { diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh index 58da5c4..52ea3c6 100755 --- a/t/t7400-submodule-basic.sh +++ b/t/t7400-submodule-basic.sh @@ -1281,4 +1281,17 @@ test_expect_success 'clone and subsequent updates correctly auto-initialize subm test_cmp actual expected2 ' +test_expect_success 'status ignores unlabeled submodules' ' + # Add submodules with and without label + # perform a change on disk + # observe the change indicated by git status + # the submodule not in the label system is ignored. + true && true +' + +test_expect_success 'diff applies to action-on-label selection' ' + # similar to status + true && true +' + test_done -- 2.7.0.rc0.45.g6b4c145 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html