]>
Commit | Line | Data |
---|---|---|
cf7f929a SP |
1 | #!/bin/sh |
2 | ||
3 | test_description='test automatic tag following' | |
4 | ||
3275f4e8 | 5 | GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main |
334afbc7 JS |
6 | export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME |
7 | ||
3e3b9321 | 8 | TEST_PASSES_SANITIZE_LEAK=true |
cf7f929a SP |
9 | . ./test-lib.sh |
10 | ||
11 | # End state of the repository: | |
12 | # | |
13 | # T - tag1 S - tag2 | |
14 | # / / | |
15 | # L - A ------ O ------ B | |
16 | # \ \ \ | |
17 | # \ C - origin/cat \ | |
3275f4e8 | 18 | # origin/main main |
cf7f929a | 19 | |
2ad23273 | 20 | test_expect_success setup ' |
cf7f929a SP |
21 | test_tick && |
22 | echo ichi >file && | |
23 | git add file && | |
24 | git commit -m L && | |
25 | L=$(git rev-parse --verify HEAD) && | |
26 | ||
27 | ( | |
28 | mkdir cloned && | |
29 | cd cloned && | |
30 | git init-db && | |
31 | git remote add -f origin .. | |
32 | ) && | |
33 | ||
34 | test_tick && | |
35 | echo A >file && | |
36 | git add file && | |
37 | git commit -m A && | |
38 | A=$(git rev-parse --verify HEAD) | |
39 | ' | |
40 | ||
41 | U=UPLOAD_LOG | |
2ad23273 | 42 | UPATH="$(pwd)/$U" |
cf7f929a | 43 | |
2ad23273 | 44 | test_expect_success 'setup expect' ' |
cf7f929a | 45 | cat - <<EOF >expect |
cf7f929a | 46 | want $A |
cf7f929a | 47 | EOF |
49f32489 ÆAB |
48 | ' |
49 | ||
97a83fa8 | 50 | get_needs () { |
2ad23273 | 51 | test -s "$1" && |
97a83fa8 JK |
52 | perl -alne ' |
53 | next unless $F[1] eq "upload-pack<"; | |
15ff91aa | 54 | next unless $F[2] eq "want"; |
97a83fa8 | 55 | print $F[2], " ", $F[3]; |
2ad23273 | 56 | ' "$1" |
97a83fa8 JK |
57 | } |
58 | ||
2ad23273 | 59 | test_expect_success 'fetch A (new commit : 1 connection)' ' |
2dec68cf | 60 | rm -f $U && |
cf7f929a SP |
61 | ( |
62 | cd cloned && | |
2ad23273 | 63 | GIT_TRACE_PACKET=$UPATH git fetch && |
3275f4e8 | 64 | test $A = $(git rev-parse --verify origin/main) |
cf7f929a | 65 | ) && |
97a83fa8 | 66 | get_needs $U >actual && |
3af82863 | 67 | test_cmp expect actual |
cf7f929a SP |
68 | ' |
69 | ||
2ad23273 | 70 | test_expect_success "create tag T on A, create C on branch cat" ' |
cf7f929a SP |
71 | git tag -a -m tag1 tag1 $A && |
72 | T=$(git rev-parse --verify tag1) && | |
73 | ||
74 | git checkout -b cat && | |
75 | echo C >file && | |
76 | git add file && | |
77 | git commit -m C && | |
78 | C=$(git rev-parse --verify HEAD) && | |
3275f4e8 | 79 | git checkout main |
cf7f929a SP |
80 | ' |
81 | ||
2ad23273 | 82 | test_expect_success 'setup expect' ' |
cf7f929a | 83 | cat - <<EOF >expect |
cf7f929a SP |
84 | want $C |
85 | want $T | |
cf7f929a | 86 | EOF |
49f32489 ÆAB |
87 | ' |
88 | ||
2ad23273 | 89 | test_expect_success 'fetch C, T (new branch, tag : 1 connection)' ' |
2dec68cf | 90 | rm -f $U && |
cf7f929a SP |
91 | ( |
92 | cd cloned && | |
2ad23273 | 93 | GIT_TRACE_PACKET=$UPATH git fetch && |
cf7f929a SP |
94 | test $C = $(git rev-parse --verify origin/cat) && |
95 | test $T = $(git rev-parse --verify tag1) && | |
96 | test $A = $(git rev-parse --verify tag1^0) | |
97 | ) && | |
97a83fa8 | 98 | get_needs $U >actual && |
3af82863 | 99 | test_cmp expect actual |
cf7f929a SP |
100 | ' |
101 | ||
2ad23273 | 102 | test_expect_success "create commits O, B, tag S on B" ' |
cf7f929a SP |
103 | test_tick && |
104 | echo O >file && | |
105 | git add file && | |
106 | git commit -m O && | |
107 | ||
108 | test_tick && | |
109 | echo B >file && | |
110 | git add file && | |
111 | git commit -m B && | |
112 | B=$(git rev-parse --verify HEAD) && | |
113 | ||
114 | git tag -a -m tag2 tag2 $B && | |
115 | S=$(git rev-parse --verify tag2) | |
116 | ' | |
117 | ||
2ad23273 | 118 | test_expect_success 'setup expect' ' |
cf7f929a | 119 | cat - <<EOF >expect |
cf7f929a SP |
120 | want $B |
121 | want $S | |
cf7f929a | 122 | EOF |
49f32489 ÆAB |
123 | ' |
124 | ||
2ad23273 | 125 | test_expect_success 'fetch B, S (commit and tag : 1 connection)' ' |
2dec68cf | 126 | rm -f $U && |
cf7f929a SP |
127 | ( |
128 | cd cloned && | |
2ad23273 | 129 | GIT_TRACE_PACKET=$UPATH git fetch && |
3275f4e8 | 130 | test $B = $(git rev-parse --verify origin/main) && |
cf7f929a SP |
131 | test $B = $(git rev-parse --verify tag2^0) && |
132 | test $S = $(git rev-parse --verify tag2) | |
133 | ) && | |
97a83fa8 | 134 | get_needs $U >actual && |
3af82863 | 135 | test_cmp expect actual |
cf7f929a SP |
136 | ' |
137 | ||
2ad23273 | 138 | test_expect_success 'setup expect' ' |
41fa7d2e | 139 | cat - <<EOF >expect |
41fa7d2e SP |
140 | want $B |
141 | want $S | |
41fa7d2e | 142 | EOF |
49f32489 ÆAB |
143 | ' |
144 | ||
3275f4e8 | 145 | test_expect_success 'new clone fetch main and tags' ' |
a6a4a88a JK |
146 | test_might_fail git branch -D cat && |
147 | rm -f $U && | |
41fa7d2e SP |
148 | ( |
149 | mkdir clone2 && | |
150 | cd clone2 && | |
151 | git init && | |
152 | git remote add origin .. && | |
2ad23273 | 153 | GIT_TRACE_PACKET=$UPATH git fetch && |
3275f4e8 | 154 | test $B = $(git rev-parse --verify origin/main) && |
41fa7d2e SP |
155 | test $S = $(git rev-parse --verify tag2) && |
156 | test $B = $(git rev-parse --verify tag2^0) && | |
157 | test $T = $(git rev-parse --verify tag1) && | |
158 | test $A = $(git rev-parse --verify tag1^0) | |
159 | ) && | |
97a83fa8 | 160 | get_needs $U >actual && |
3af82863 | 161 | test_cmp expect actual |
41fa7d2e SP |
162 | ' |
163 | ||
cf7f929a | 164 | test_done |