]>
Commit | Line | Data |
---|---|---|
7d782416 DT |
1 | #!/bin/sh |
2 | ||
3 | test_description='sparse checkout scope tests' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | test_expect_success 'setup' ' | |
8 | echo "initial" >a && | |
9 | echo "initial" >b && | |
10 | echo "initial" >c && | |
11 | git add a b c && | |
12 | git commit -m "initial commit" | |
13 | ' | |
14 | ||
15 | test_expect_success 'create feature branch' ' | |
16 | git checkout -b feature && | |
17 | echo "modified" >b && | |
18 | echo "modified" >c && | |
19 | git add b c && | |
20 | git commit -m "modification" | |
21 | ' | |
22 | ||
23 | test_expect_success 'perform sparse checkout of master' ' | |
24 | git config --local --bool core.sparsecheckout true && | |
25 | echo "!/*" >.git/info/sparse-checkout && | |
26 | echo "/a" >>.git/info/sparse-checkout && | |
27 | echo "/c" >>.git/info/sparse-checkout && | |
28 | git checkout master && | |
29 | test_path_is_file a && | |
30 | test_path_is_missing b && | |
31 | test_path_is_file c | |
32 | ' | |
33 | ||
fa655d84 BP |
34 | test_expect_success 'checkout -b checkout.optimizeNewBranch interaction' ' |
35 | cp .git/info/sparse-checkout .git/info/sparse-checkout.bak && | |
36 | test_when_finished " | |
37 | mv -f .git/info/sparse-checkout.bak .git/info/sparse-checkout | |
38 | git checkout master | |
39 | " && | |
40 | echo "/b" >>.git/info/sparse-checkout && | |
41 | test "$(git ls-files -t b)" = "S b" && | |
42 | git -c checkout.optimizeNewBranch=true checkout -b fast && | |
43 | test "$(git ls-files -t b)" = "S b" && | |
44 | git checkout -b slow && | |
45 | test "$(git ls-files -t b)" = "H b" | |
46 | ' | |
47 | ||
7d782416 DT |
48 | test_expect_success 'merge feature branch into sparse checkout of master' ' |
49 | git merge feature && | |
50 | test_path_is_file a && | |
51 | test_path_is_missing b && | |
52 | test_path_is_file c && | |
53 | test "$(cat c)" = "modified" | |
54 | ' | |
55 | ||
56 | test_expect_success 'return to full checkout of master' ' | |
57 | git checkout feature && | |
58 | echo "/*" >.git/info/sparse-checkout && | |
59 | git checkout master && | |
60 | test_path_is_file a && | |
61 | test_path_is_file b && | |
62 | test_path_is_file c && | |
63 | test "$(cat b)" = "modified" | |
64 | ' | |
65 | ||
66 | test_done |