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