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