]> git.ipfire.org Git - thirdparty/git.git/blame - t/t5503-tagfollow.sh
Merge branch 'ah/rebase-no-fork-point-config'
[thirdparty/git.git] / t / t5503-tagfollow.sh
CommitLineData
cf7f929a
SP
1#!/bin/sh
2
3test_description='test automatic tag following'
4
3275f4e8 5GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
334afbc7
JS
6export 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 19test_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
40U=UPLOAD_LOG
2ad23273 41UPATH="$(pwd)/$U"
cf7f929a 42
2ad23273 43test_expect_success 'setup expect' '
cf7f929a 44cat - <<EOF >expect
cf7f929a 45want $A
cf7f929a 46EOF
49f32489
ÆAB
47'
48
97a83fa8 49get_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 58test_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 69test_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 81test_expect_success 'setup expect' '
cf7f929a 82cat - <<EOF >expect
cf7f929a
SP
83want $C
84want $T
cf7f929a 85EOF
49f32489
ÆAB
86'
87
2ad23273 88test_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 101test_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 117test_expect_success 'setup expect' '
cf7f929a 118cat - <<EOF >expect
cf7f929a
SP
119want $B
120want $S
cf7f929a 121EOF
49f32489
ÆAB
122'
123
2ad23273 124test_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 137test_expect_success 'setup expect' '
41fa7d2e 138cat - <<EOF >expect
41fa7d2e
SP
139want $B
140want $S
41fa7d2e 141EOF
49f32489
ÆAB
142'
143
3275f4e8 144test_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 163test_done