diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-08-19 14:41:27 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-08-19 14:41:27 -0700 |
commit | 4f66e44300fd7e718d7240e211f2d4a3c576de82 (patch) | |
tree | 170c744122082f14ebfc7854f6b53ee054bff89a /t | |
parent | 7e7ce32f7aa3b2b63d267c7efa173d129d1096cb (diff) | |
parent | 7d782416cb5176d93a073bee8048163db544c80f (diff) | |
download | git-4f66e44300fd7e718d7240e211f2d4a3c576de82.tar.gz git-4f66e44300fd7e718d7240e211f2d4a3c576de82.tar.xz |
Merge branch 'as/sparse-checkout-removal' into maint
"sparse checkout" misbehaved for a path that is excluded from the
checkout when switching between branches that differ at the path.
* as/sparse-checkout-removal:
unpack-trees: don't update files with CE_WT_REMOVE set
Diffstat (limited to 't')
-rwxr-xr-x | t/t1090-sparse-checkout-scope.sh | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/t/t1090-sparse-checkout-scope.sh b/t/t1090-sparse-checkout-scope.sh new file mode 100755 index 000000000..1f61eb3e8 --- /dev/null +++ b/t/t1090-sparse-checkout-scope.sh @@ -0,0 +1,52 @@ +#!/bin/sh + +test_description='sparse checkout scope tests' + +. ./test-lib.sh + +test_expect_success 'setup' ' + echo "initial" >a && + echo "initial" >b && + echo "initial" >c && + git add a b c && + git commit -m "initial commit" +' + +test_expect_success 'create feature branch' ' + git checkout -b feature && + echo "modified" >b && + echo "modified" >c && + git add b c && + git commit -m "modification" +' + +test_expect_success 'perform sparse checkout of master' ' + git config --local --bool core.sparsecheckout true && + echo "!/*" >.git/info/sparse-checkout && + echo "/a" >>.git/info/sparse-checkout && + echo "/c" >>.git/info/sparse-checkout && + git checkout master && + test_path_is_file a && + test_path_is_missing b && + test_path_is_file c +' + +test_expect_success 'merge feature branch into sparse checkout of master' ' + git merge feature && + test_path_is_file a && + test_path_is_missing b && + test_path_is_file c && + test "$(cat c)" = "modified" +' + +test_expect_success 'return to full checkout of master' ' + git checkout feature && + echo "/*" >.git/info/sparse-checkout && + git checkout master && + test_path_is_file a && + test_path_is_file b && + test_path_is_file c && + test "$(cat b)" = "modified" +' + +test_done |