When submodule.active is configured, in addition to adding
submodule."<name>".url to the config, add the path of the added
submodule if it isn't already covered by the current config values.

Signed-off-by: Brandon Williams <bmw...@google.com>
---
 git-submodule.sh               | 11 +++++++++++
 t/t7413-submodule-is-active.sh | 22 ++++++++++++++++++++++
 2 files changed, 33 insertions(+)

diff --git a/git-submodule.sh b/git-submodule.sh
index e5b9a8920..4633a4336 100755
--- a/git-submodule.sh
+++ b/git-submodule.sh
@@ -271,6 +271,17 @@ or you are unsure what this means choose another name with 
the '--name' option."
        fi &&
        git add --force .gitmodules ||
        die "$(eval_gettext "Failed to register submodule '\$sm_path'")"
+
+       if git config --get submodule.active >/dev/null
+       then
+               # If the submodule being adding isn't already covered by the
+               # current configured pathspec, add the submodule's path to
+               # 'submodule.active'
+               if ! git submodule--helper is-active "$sm_path"
+               then
+                       git config --add submodule.active "$sm_path"
+               fi
+       fi
 }
 
 #
diff --git a/t/t7413-submodule-is-active.sh b/t/t7413-submodule-is-active.sh
index 683487020..8a519163b 100755
--- a/t/t7413-submodule-is-active.sh
+++ b/t/t7413-submodule-is-active.sh
@@ -60,4 +60,26 @@ test_expect_success 'is-active works with exclusions in 
submodule.active config'
        git -C super config --unset-all submodule.active
 '
 
+test_expect_success 'is-active and submodule add' '
+       test_when_finished "rm -rf super2" &&
+       git init super2 &&
+       test_commit -C super2 initial &&
+       git -C super2 config --add submodule.active "sub*" &&
+
+       cat >expect <<-\EOF &&
+       sub*
+       EOF
+       git -C super2 submodule add ../sub sub1 &&
+       git -C super2 config --get-all submodule.active >actual &&
+       test_cmp actual expect &&
+
+       cat >expect <<-\EOF &&
+       sub*
+       mod
+       EOF
+       git -C super2 submodule add ../sub mod &&
+       git -C super2 config --get-all submodule.active >actual &&
+       test_cmp actual expect
+'
+
 test_done
-- 
2.11.0.483.g087da7b7c-goog

Reply via email to