]>
Commit | Line | Data |
---|---|---|
df56607d MK |
1 | #!/bin/sh |
2 | ||
3 | test_description='Combination of submodules and multiple workdirs' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | base_path=$(pwd -P) | |
8 | ||
31158c7e SB |
9 | test_expect_success 'setup: make origin' ' |
10 | mkdir -p origin/sub && | |
11 | ( | |
12 | cd origin/sub && git init && | |
13 | echo file1 >file1 && | |
14 | git add file1 && | |
15 | git commit -m file1 | |
16 | ) && | |
17 | mkdir -p origin/main && | |
18 | ( | |
19 | cd origin/main && git init && | |
20 | git submodule add ../sub && | |
21 | git commit -m "add sub" | |
22 | ) && | |
23 | ( | |
24 | cd origin/sub && | |
25 | echo file1updated >file1 && | |
26 | git add file1 && | |
27 | git commit -m "file1 updated" | |
28 | ) && | |
29 | git -C origin/main/sub pull && | |
30 | ( | |
31 | cd origin/main && | |
32 | git add sub && | |
33 | git commit -m "sub updated" | |
34 | ) | |
35 | ' | |
36 | ||
37 | test_expect_success 'setup: clone' ' | |
38 | mkdir clone && | |
39 | git -C clone clone --recursive "$base_path/origin/main" | |
40 | ' | |
df56607d MK |
41 | |
42 | rev1_hash_main=$(git --git-dir=origin/main/.git show --pretty=format:%h -q "HEAD~1") | |
43 | rev1_hash_sub=$(git --git-dir=origin/sub/.git show --pretty=format:%h -q "HEAD~1") | |
44 | ||
31158c7e SB |
45 | test_expect_success 'checkout main' ' |
46 | mkdir default_checkout && | |
47 | git -C clone/main worktree add "$base_path/default_checkout/main" "$rev1_hash_main" | |
48 | ' | |
df56607d | 49 | |
31158c7e SB |
50 | test_expect_failure 'can see submodule diffs just after checkout' ' |
51 | git -C default_checkout/main diff --submodule master"^!" >out && | |
52 | grep "file1 updated" out | |
53 | ' | |
df56607d | 54 | |
31158c7e SB |
55 | test_expect_success 'checkout main and initialize independent clones' ' |
56 | mkdir fully_cloned_submodule && | |
57 | git -C clone/main worktree add "$base_path/fully_cloned_submodule/main" "$rev1_hash_main" && | |
58 | git -C fully_cloned_submodule/main submodule update | |
59 | ' | |
df56607d | 60 | |
31158c7e SB |
61 | test_expect_success 'can see submodule diffs after independent cloning' ' |
62 | git -C fully_cloned_submodule/main diff --submodule master"^!" >out && | |
63 | grep "file1 updated" out | |
64 | ' | |
df56607d | 65 | |
31158c7e SB |
66 | test_expect_success 'checkout sub manually' ' |
67 | mkdir linked_submodule && | |
68 | git -C clone/main worktree add "$base_path/linked_submodule/main" "$rev1_hash_main" && | |
69 | git -C clone/main/sub worktree add "$base_path/linked_submodule/main/sub" "$rev1_hash_sub" | |
70 | ' | |
11f9dd71 | 71 | |
31158c7e SB |
72 | test_expect_success 'can see submodule diffs after manual checkout of linked submodule' ' |
73 | git -C linked_submodule/main diff --submodule master"^!" >out && | |
74 | grep "file1 updated" out | |
75 | ' | |
11f9dd71 | 76 | |
df56607d | 77 | test_done |