Signed-off-by: Stefan Beller <sbeller@xxxxxxxxxx> --- builtin/submodule--helper.c | 16 ++++++++++++++++ t/t7413-submodule--helper.sh | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c index 29a345e..aa838c5 100644 --- a/builtin/submodule--helper.c +++ b/builtin/submodule--helper.c @@ -610,6 +610,8 @@ struct submodule_update_clone { /* Machine-readable status lines to be consumed by git-submodule.sh */ struct string_list projectlines; + /* The group specification we'll be processing. */ + struct string_list *group; /* If we want to stop as fast as possible and return an error */ unsigned quickstop : 1; @@ -646,6 +648,9 @@ static int prepare_to_clone_next_submodule(const struct cache_entry *ce, sub = submodule_from_path(null_sha1, ce->name); + if (!submodule_in_group(suc->group, sub)) + goto cleanup; + if (suc->recursive_prefix) displaypath = relative_path(suc->recursive_prefix, ce->name, &displaypath_sb); @@ -771,6 +776,7 @@ static int update_clone(int argc, const char **argv, const char *prefix) struct string_list_item *item; struct pathspec pathspec; struct submodule_update_clone suc = SUBMODULE_UPDATE_CLONE_INIT; + struct string_list actual_group = STRING_LIST_INIT_DUP; struct option module_update_clone_options[] = { OPT_STRING(0, "prefix", &prefix, @@ -810,6 +816,16 @@ static int update_clone(int argc, const char **argv, const char *prefix) if (module_list_compute(argc, argv, prefix, &pathspec, &suc.list) < 0) return 1; + if (!pathspec.nr) { + const struct string_list *group = + group = git_config_get_value_multi("submodule.defaultGroup"); + if (group) { + for_each_string_list_item(item, group) + string_list_append(&actual_group, item->string); + suc.group = &actual_group; + } + } + if (pathspec.nr) suc.warn_if_uninitialized = 1; diff --git a/t/t7413-submodule--helper.sh b/t/t7413-submodule--helper.sh index ef12c63..39e469f 100755 --- a/t/t7413-submodule--helper.sh +++ b/t/t7413-submodule--helper.sh @@ -190,4 +190,40 @@ test_expect_success 'submodule--helper init respects groups' ' ) ' +cat >expect <<-EOF +160000 $submodule_sha1 0 1 sub0 +160000 $submodule_sha1 0 1 sub1 +160000 $submodule_sha1 0 1 sub3 +EOF + +test_expect_success 'submodule--helper update-clone respects groups' ' + ( + cd super_clone && + git submodule init && + git config --add submodule.defaultGroup *bit1 && + git config --add submodule.defaultGroup ./sub0 && + git submodule--helper update-clone >../actual && + git config --unset-all submodule.defaultGroup + ) && + test_cmp expect actual +' + +cat >expect <<-EOF +Submodule path 'sub0': checked out '$submodule_sha1' +Submodule path 'sub1': checked out '$submodule_sha1' +Submodule path 'sub3': checked out '$submodule_sha1' +EOF + +test_expect_success 'git submodule update respects groups' ' + ( + cd super_clone && + git submodule deinit -f . && + git config --add submodule.defaultGroup *bit1 && + git config --add submodule.defaultGroup ./sub0 && + git submodule update --init >../actual && + git config --unset-all submodule.defaultGroup + ) && + test_cmp expect actual +' + test_done -- 2.8.0.41.g8d9aeb3 -- 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