Signed-off-by: Stefan Beller <[email protected]>
---
 builtin/submodule--helper.c  | 19 +++++++++++++++++--
 t/t7413-submodule--helper.sh | 15 +++++++++++++++
 2 files changed, 32 insertions(+), 2 deletions(-)

diff --git a/builtin/submodule--helper.c b/builtin/submodule--helper.c
index adb6188..29a345e 100644
--- a/builtin/submodule--helper.c
+++ b/builtin/submodule--helper.c
@@ -405,6 +405,7 @@ static int module_init(int argc, const char **argv, const 
char *prefix)
 {
        struct pathspec pathspec;
        struct module_list list = MODULE_LIST_INIT;
+       struct string_list *group = NULL;
        int quiet = 0;
        int i;
 
@@ -427,8 +428,22 @@ static int module_init(int argc, const char **argv, const 
char *prefix)
        if (module_list_compute(argc, argv, prefix, &pathspec, &list) < 0)
                return 1;
 
-       for (i = 0; i < list.nr; i++)
-               init_submodule(list.entries[i]->name, prefix, quiet);
+       if (!pathspec.nr)
+               group = string_list_duplicate(
+                       git_config_get_value_multi("submodule.defaultGroup"), 
1);
+       if (group) {
+               gitmodules_config();
+               for (i = 0; i < list.nr; i++) {
+                       const struct submodule *sub =
+                               submodule_from_path(null_sha1,
+                                                   list.entries[i]->name);
+                       if (submodule_in_group(group, sub))
+                               init_submodule(list.entries[i]->name, prefix, 
quiet);
+               }
+               string_list_clear(group, 1);
+       } else
+               for (i = 0; i < list.nr; i++)
+                       init_submodule(list.entries[i]->name, prefix, quiet);
 
        return 0;
 }
diff --git a/t/t7413-submodule--helper.sh b/t/t7413-submodule--helper.sh
index 1b5d135..ef12c63 100755
--- a/t/t7413-submodule--helper.sh
+++ b/t/t7413-submodule--helper.sh
@@ -175,4 +175,19 @@ test_expect_success 'submodule sync respects groups' '
        )
 '
 
+test_expect_success 'submodule--helper init respects groups' '
+       (
+               cd super_clone &&
+               git submodule deinit . &&
+               git config --add submodule.defaultGroup *bit1 &&
+               git config --add submodule.defaultGroup ./sub0 &&
+               git submodule init &&
+               git config --unset-all submodule.defaultGroup &&
+               test "$(git config submodule.sub0.url)" = "$suburl" &&
+               test "$(git config submodule.sub1.url)" = "$suburl" &&
+               test_must_fail git config submodule.sub2.url &&
+               test "$(git config submodule.sub3.url)" = "$suburl"
+       )
+'
+
 test_done
-- 
2.8.0.41.g8d9aeb3

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to