submodule: teach set-branch subcommand
This teaches git-submodule the set-branch subcommand which allows the branch of a submodule to be set through a porcelain command without having to manually manipulate the .gitmodules file. Signed-off-by: Denton Liu <liu.denton@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
c89c494240
commit
b57e8119e6
93
t/t7419-submodule-set-branch.sh
Executable file
93
t/t7419-submodule-set-branch.sh
Executable file
@ -0,0 +1,93 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (c) 2019 Denton Liu
|
||||
#
|
||||
|
||||
test_description='Test submodules set-branch subcommand
|
||||
|
||||
This test verifies that the set-branch subcommand of git-submodule is working
|
||||
as expected.
|
||||
'
|
||||
|
||||
TEST_NO_CREATE_REPO=1
|
||||
. ./test-lib.sh
|
||||
|
||||
test_expect_success 'submodule config cache setup' '
|
||||
mkdir submodule &&
|
||||
(cd submodule &&
|
||||
git init &&
|
||||
echo a >a &&
|
||||
git add . &&
|
||||
git commit -ma &&
|
||||
git checkout -b topic &&
|
||||
echo b >a &&
|
||||
git add . &&
|
||||
git commit -mb
|
||||
) &&
|
||||
mkdir super &&
|
||||
(cd super &&
|
||||
git init &&
|
||||
git submodule add ../submodule &&
|
||||
git commit -m "add submodule"
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'ensure submodule branch is unset' '
|
||||
(cd super &&
|
||||
test_must_fail grep branch .gitmodules
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'test submodule set-branch --branch' '
|
||||
(cd super &&
|
||||
git submodule set-branch --branch topic submodule &&
|
||||
grep "branch = topic" .gitmodules &&
|
||||
git submodule update --remote &&
|
||||
cat <<-\EOF >expect &&
|
||||
b
|
||||
EOF
|
||||
git -C submodule show -s --pretty=%s >actual &&
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'test submodule set-branch --default' '
|
||||
(cd super &&
|
||||
git submodule set-branch --default submodule &&
|
||||
test_must_fail grep branch .gitmodules &&
|
||||
git submodule update --remote &&
|
||||
cat <<-\EOF >expect &&
|
||||
a
|
||||
EOF
|
||||
git -C submodule show -s --pretty=%s >actual &&
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'test submodule set-branch -b' '
|
||||
(cd super &&
|
||||
git submodule set-branch -b topic submodule &&
|
||||
grep "branch = topic" .gitmodules &&
|
||||
git submodule update --remote &&
|
||||
cat <<-\EOF >expect &&
|
||||
b
|
||||
EOF
|
||||
git -C submodule show -s --pretty=%s >actual &&
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
test_expect_success 'test submodule set-branch -d' '
|
||||
(cd super &&
|
||||
git submodule set-branch -d submodule &&
|
||||
test_must_fail grep branch .gitmodules &&
|
||||
git submodule update --remote &&
|
||||
cat <<-\EOF >expect &&
|
||||
a
|
||||
EOF
|
||||
git -C submodule show -s --pretty=%s >actual &&
|
||||
test_cmp expect actual
|
||||
)
|
||||
'
|
||||
|
||||
test_done
|
Reference in New Issue
Block a user