f4609b896f
This also bumps the stable nixpkgs to 20.09 as of 2020-11-21, because there is some breakage in the git build related to the netrc credentials helper which someone has taken care of in nixpkgs. The stable channel is not used for anything other than git, so this should be fine. Change-Id: I3575a19dab09e1e9556cf8231d717de9890484fb
75 lines
2.1 KiB
Bash
Executable file
75 lines
2.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='checkout can handle submodules'
|
|
|
|
. ./test-lib.sh
|
|
. "$TEST_DIRECTORY"/lib-submodule-update.sh
|
|
|
|
test_expect_success 'setup' '
|
|
mkdir submodule &&
|
|
(cd submodule &&
|
|
git init &&
|
|
test_commit first) &&
|
|
git add submodule &&
|
|
test_tick &&
|
|
git commit -m superproject &&
|
|
(cd submodule &&
|
|
test_commit second) &&
|
|
git add submodule &&
|
|
test_tick &&
|
|
git commit -m updated.superproject
|
|
'
|
|
|
|
test_expect_success '"reset <submodule>" updates the index' '
|
|
git update-index --refresh &&
|
|
git diff-files --quiet &&
|
|
git diff-index --quiet --cached HEAD &&
|
|
git reset HEAD^ submodule &&
|
|
test_must_fail git diff-files --quiet &&
|
|
git reset submodule &&
|
|
git diff-files --quiet
|
|
'
|
|
|
|
test_expect_success '"checkout <submodule>" updates the index only' '
|
|
git update-index --refresh &&
|
|
git diff-files --quiet &&
|
|
git diff-index --quiet --cached HEAD &&
|
|
git checkout HEAD^ submodule &&
|
|
test_must_fail git diff-files --quiet &&
|
|
git checkout HEAD submodule &&
|
|
git diff-files --quiet
|
|
'
|
|
|
|
test_expect_success '"checkout <submodule>" honors diff.ignoreSubmodules' '
|
|
git config diff.ignoreSubmodules dirty &&
|
|
echo x> submodule/untracked &&
|
|
git checkout HEAD >actual 2>&1 &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .gitmodules' '
|
|
git config diff.ignoreSubmodules none &&
|
|
git config -f .gitmodules submodule.submodule.path submodule &&
|
|
git config -f .gitmodules submodule.submodule.ignore untracked &&
|
|
git checkout HEAD >actual 2>&1 &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
test_expect_success '"checkout <submodule>" honors submodule.*.ignore from .git/config' '
|
|
git config -f .gitmodules submodule.submodule.ignore none &&
|
|
git config submodule.submodule.path submodule &&
|
|
git config submodule.submodule.ignore all &&
|
|
git checkout HEAD >actual 2>&1 &&
|
|
test_must_be_empty actual
|
|
'
|
|
|
|
KNOWN_FAILURE_DIRECTORY_SUBMODULE_CONFLICTS=1
|
|
test_submodule_switch_recursing_with_args "checkout"
|
|
|
|
test_submodule_forced_switch_recursing_with_args "checkout -f"
|
|
|
|
test_submodule_switch "checkout"
|
|
|
|
test_submodule_forced_switch "checkout -f"
|
|
|
|
test_done
|