submodule init: initialize active submodules
Teach `submodule init` to initialize submodules which have been configured to be active by setting 'submodule.active' with a pathspec. Now if no path arguments are given and 'submodule.active' is configured, `init` will initialize all submodules which have been configured to be active. If no path arguments are given and 'submodule.active' is not configured, then `init` will retain the old behavior of initializing all submodules. This allows users to record more complex patterns as it saves retyping them whenever you invoke update. Signed-off-by: Brandon Williams <bmwill@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
a086f921a7
commit
3e7eaed016
@ -1130,5 +1130,62 @@ test_expect_success 'submodule helper list is not confused by common prefixes' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'setup superproject with submodules' '
|
||||
git init sub1 &&
|
||||
test_commit -C sub1 test &&
|
||||
test_commit -C sub1 test2 &&
|
||||
git init multisuper &&
|
||||
git -C multisuper submodule add ../sub1 sub0 &&
|
||||
git -C multisuper submodule add ../sub1 sub1 &&
|
||||
git -C multisuper submodule add ../sub1 sub2 &&
|
||||
git -C multisuper submodule add ../sub1 sub3 &&
|
||||
git -C multisuper commit -m "add some submodules"
|
||||
'
|
||||
|
||||
cat >expect <<-EOF
|
||||
-sub0
|
||||
sub1 (test2)
|
||||
sub2 (test2)
|
||||
sub3 (test2)
|
||||
EOF
|
||||
|
||||
test_expect_success 'submodule update --init with a specification' '
|
||||
test_when_finished "rm -rf multisuper_clone" &&
|
||||
pwd=$(pwd) &&
|
||||
git clone file://"$pwd"/multisuper multisuper_clone &&
|
||||
git -C multisuper_clone submodule update --init . ":(exclude)sub0" &&
|
||||
git -C multisuper_clone submodule status |cut -c 1,43- >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'submodule update --init with submodule.active set' '
|
||||
test_when_finished "rm -rf multisuper_clone" &&
|
||||
pwd=$(pwd) &&
|
||||
git clone file://"$pwd"/multisuper multisuper_clone &&
|
||||
git -C multisuper_clone config submodule.active "." &&
|
||||
git -C multisuper_clone config --add submodule.active ":(exclude)sub0" &&
|
||||
git -C multisuper_clone submodule update --init &&
|
||||
git -C multisuper_clone submodule status |cut -c 1,43- >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'submodule update and setting submodule.<name>.active' '
|
||||
test_when_finished "rm -rf multisuper_clone" &&
|
||||
pwd=$(pwd) &&
|
||||
git clone file://"$pwd"/multisuper multisuper_clone &&
|
||||
git -C multisuper_clone config --bool submodule.sub0.active "true" &&
|
||||
git -C multisuper_clone config --bool submodule.sub1.active "false" &&
|
||||
git -C multisuper_clone config --bool submodule.sub2.active "true" &&
|
||||
|
||||
cat >expect <<-\EOF &&
|
||||
sub0 (test2)
|
||||
-sub1
|
||||
sub2 (test2)
|
||||
-sub3
|
||||
EOF
|
||||
git -C multisuper_clone submodule update &&
|
||||
git -C multisuper_clone submodule status |cut -c 1,43- >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
||||
Reference in New Issue
Block a user