blob: 4ca48f02761d4379bf5e01cb862e47830ec0c5ac [file] [log] [blame]
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -05001#!/bin/sh
2
3test_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
Jeff King2ad23272013-03-20 13:43:47 -040016test_expect_success setup '
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050017 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
37U=UPLOAD_LOG
Jeff King2ad23272013-03-20 13:43:47 -040038UPATH="$(pwd)/$U"
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050039
Jeff King2ad23272013-03-20 13:43:47 -040040test_expect_success 'setup expect' '
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050041cat - <<EOF >expect
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050042want $A
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050043EOF
Ævar Arnfjörð Bjarmason49f32482010-08-11 19:04:07 +000044'
45
Jeff King97a83fa2013-02-20 14:55:28 -050046get_needs () {
Jeff King2ad23272013-03-20 13:43:47 -040047 test -s "$1" &&
Jeff King97a83fa2013-02-20 14:55:28 -050048 perl -alne '
49 next unless $F[1] eq "upload-pack<";
50 last if $F[2] eq "0000";
51 print $F[2], " ", $F[3];
Jeff King2ad23272013-03-20 13:43:47 -040052 ' "$1"
Jeff King97a83fa2013-02-20 14:55:28 -050053}
54
Jeff King2ad23272013-03-20 13:43:47 -040055test_expect_success 'fetch A (new commit : 1 connection)' '
Jonathan Nieder2dec68c2010-10-31 02:30:58 -050056 rm -f $U &&
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050057 (
58 cd cloned &&
Jeff King2ad23272013-03-20 13:43:47 -040059 GIT_TRACE_PACKET=$UPATH git fetch &&
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050060 test $A = $(git rev-parse --verify origin/master)
61 ) &&
Jeff King97a83fa2013-02-20 14:55:28 -050062 get_needs $U >actual &&
Junio C Hamano3af82862008-05-23 22:28:56 -070063 test_cmp expect actual
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050064'
65
Jeff King2ad23272013-03-20 13:43:47 -040066test_expect_success "create tag T on A, create C on branch cat" '
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050067 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
Jeff King2ad23272013-03-20 13:43:47 -040078test_expect_success 'setup expect' '
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050079cat - <<EOF >expect
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050080want $C
81want $T
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050082EOF
Ævar Arnfjörð Bjarmason49f32482010-08-11 19:04:07 +000083'
84
Jeff King2ad23272013-03-20 13:43:47 -040085test_expect_success 'fetch C, T (new branch, tag : 1 connection)' '
Jonathan Nieder2dec68c2010-10-31 02:30:58 -050086 rm -f $U &&
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050087 (
88 cd cloned &&
Jeff King2ad23272013-03-20 13:43:47 -040089 GIT_TRACE_PACKET=$UPATH git fetch &&
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050090 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 ) &&
Jeff King97a83fa2013-02-20 14:55:28 -050094 get_needs $U >actual &&
Junio C Hamano3af82862008-05-23 22:28:56 -070095 test_cmp expect actual
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050096'
97
Jeff King2ad23272013-03-20 13:43:47 -040098test_expect_success "create commits O, B, tag S on B" '
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -050099 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
Jeff King2ad23272013-03-20 13:43:47 -0400114test_expect_success 'setup expect' '
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -0500115cat - <<EOF >expect
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -0500116want $B
117want $S
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -0500118EOF
Ævar Arnfjörð Bjarmason49f32482010-08-11 19:04:07 +0000119'
120
Jeff King2ad23272013-03-20 13:43:47 -0400121test_expect_success 'fetch B, S (commit and tag : 1 connection)' '
Jonathan Nieder2dec68c2010-10-31 02:30:58 -0500122 rm -f $U &&
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -0500123 (
124 cd cloned &&
Jeff King2ad23272013-03-20 13:43:47 -0400125 GIT_TRACE_PACKET=$UPATH git fetch &&
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -0500126 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 ) &&
Jeff King97a83fa2013-02-20 14:55:28 -0500130 get_needs $U >actual &&
Junio C Hamano3af82862008-05-23 22:28:56 -0700131 test_cmp expect actual
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -0500132'
133
Jeff King2ad23272013-03-20 13:43:47 -0400134test_expect_success 'setup expect' '
Shawn O. Pearce41fa7d22008-03-03 22:27:40 -0500135cat - <<EOF >expect
Shawn O. Pearce41fa7d22008-03-03 22:27:40 -0500136want $B
137want $S
Shawn O. Pearce41fa7d22008-03-03 22:27:40 -0500138EOF
Ævar Arnfjörð Bjarmason49f32482010-08-11 19:04:07 +0000139'
140
Jeff King2ad23272013-03-20 13:43:47 -0400141test_expect_success 'new clone fetch master and tags' '
Jeff Kinga6a4a882015-03-20 06:10:21 -0400142 test_might_fail git branch -D cat &&
143 rm -f $U &&
Shawn O. Pearce41fa7d22008-03-03 22:27:40 -0500144 (
145 mkdir clone2 &&
146 cd clone2 &&
147 git init &&
148 git remote add origin .. &&
Jeff King2ad23272013-03-20 13:43:47 -0400149 GIT_TRACE_PACKET=$UPATH git fetch &&
Shawn O. Pearce41fa7d22008-03-03 22:27:40 -0500150 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 ) &&
Jeff King97a83fa2013-02-20 14:55:28 -0500156 get_needs $U >actual &&
Junio C Hamano3af82862008-05-23 22:28:56 -0700157 test_cmp expect actual
Shawn O. Pearce41fa7d22008-03-03 22:27:40 -0500158'
159
Shawn O. Pearcecf7f9292008-03-02 21:35:33 -0500160test_done