Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 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 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 16 | test_expect_success setup ' |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 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 |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 38 | UPATH="$(pwd)/$U" |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 39 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 40 | test_expect_success 'setup expect' ' |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 41 | cat - <<EOF >expect |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 42 | want $A |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 43 | EOF |
Ævar Arnfjörð Bjarmason | 49f3248 | 2010-08-11 19:04:07 +0000 | [diff] [blame] | 44 | ' |
| 45 | |
Jeff King | 97a83fa | 2013-02-20 14:55:28 -0500 | [diff] [blame] | 46 | get_needs () { |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 47 | test -s "$1" && |
Jeff King | 97a83fa | 2013-02-20 14:55:28 -0500 | [diff] [blame] | 48 | perl -alne ' |
| 49 | next unless $F[1] eq "upload-pack<"; |
| 50 | last if $F[2] eq "0000"; |
| 51 | print $F[2], " ", $F[3]; |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 52 | ' "$1" |
Jeff King | 97a83fa | 2013-02-20 14:55:28 -0500 | [diff] [blame] | 53 | } |
| 54 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 55 | test_expect_success 'fetch A (new commit : 1 connection)' ' |
Jonathan Nieder | 2dec68c | 2010-10-31 02:30:58 -0500 | [diff] [blame] | 56 | rm -f $U && |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 57 | ( |
| 58 | cd cloned && |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 59 | GIT_TRACE_PACKET=$UPATH git fetch && |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 60 | test $A = $(git rev-parse --verify origin/master) |
| 61 | ) && |
Jeff King | 97a83fa | 2013-02-20 14:55:28 -0500 | [diff] [blame] | 62 | get_needs $U >actual && |
Junio C Hamano | 3af8286 | 2008-05-23 22:28:56 -0700 | [diff] [blame] | 63 | test_cmp expect actual |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 64 | ' |
| 65 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 66 | test_expect_success "create tag T on A, create C on branch cat" ' |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 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 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 78 | test_expect_success 'setup expect' ' |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 79 | cat - <<EOF >expect |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 80 | want $C |
| 81 | want $T |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 82 | EOF |
Ævar Arnfjörð Bjarmason | 49f3248 | 2010-08-11 19:04:07 +0000 | [diff] [blame] | 83 | ' |
| 84 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 85 | test_expect_success 'fetch C, T (new branch, tag : 1 connection)' ' |
Jonathan Nieder | 2dec68c | 2010-10-31 02:30:58 -0500 | [diff] [blame] | 86 | rm -f $U && |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 87 | ( |
| 88 | cd cloned && |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 89 | GIT_TRACE_PACKET=$UPATH git fetch && |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 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 | ) && |
Jeff King | 97a83fa | 2013-02-20 14:55:28 -0500 | [diff] [blame] | 94 | get_needs $U >actual && |
Junio C Hamano | 3af8286 | 2008-05-23 22:28:56 -0700 | [diff] [blame] | 95 | test_cmp expect actual |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 96 | ' |
| 97 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 98 | test_expect_success "create commits O, B, tag S on B" ' |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 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 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 114 | test_expect_success 'setup expect' ' |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 115 | cat - <<EOF >expect |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 116 | want $B |
| 117 | want $S |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 118 | EOF |
Ævar Arnfjörð Bjarmason | 49f3248 | 2010-08-11 19:04:07 +0000 | [diff] [blame] | 119 | ' |
| 120 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 121 | test_expect_success 'fetch B, S (commit and tag : 1 connection)' ' |
Jonathan Nieder | 2dec68c | 2010-10-31 02:30:58 -0500 | [diff] [blame] | 122 | rm -f $U && |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 123 | ( |
| 124 | cd cloned && |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 125 | GIT_TRACE_PACKET=$UPATH git fetch && |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 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 | ) && |
Jeff King | 97a83fa | 2013-02-20 14:55:28 -0500 | [diff] [blame] | 130 | get_needs $U >actual && |
Junio C Hamano | 3af8286 | 2008-05-23 22:28:56 -0700 | [diff] [blame] | 131 | test_cmp expect actual |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 132 | ' |
| 133 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 134 | test_expect_success 'setup expect' ' |
Shawn O. Pearce | 41fa7d2 | 2008-03-03 22:27:40 -0500 | [diff] [blame] | 135 | cat - <<EOF >expect |
Shawn O. Pearce | 41fa7d2 | 2008-03-03 22:27:40 -0500 | [diff] [blame] | 136 | want $B |
| 137 | want $S |
Shawn O. Pearce | 41fa7d2 | 2008-03-03 22:27:40 -0500 | [diff] [blame] | 138 | EOF |
Ævar Arnfjörð Bjarmason | 49f3248 | 2010-08-11 19:04:07 +0000 | [diff] [blame] | 139 | ' |
| 140 | |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 141 | test_expect_success 'new clone fetch master and tags' ' |
Jeff King | a6a4a88 | 2015-03-20 06:10:21 -0400 | [diff] [blame] | 142 | test_might_fail git branch -D cat && |
| 143 | rm -f $U && |
Shawn O. Pearce | 41fa7d2 | 2008-03-03 22:27:40 -0500 | [diff] [blame] | 144 | ( |
| 145 | mkdir clone2 && |
| 146 | cd clone2 && |
| 147 | git init && |
| 148 | git remote add origin .. && |
Jeff King | 2ad2327 | 2013-03-20 13:43:47 -0400 | [diff] [blame] | 149 | GIT_TRACE_PACKET=$UPATH git fetch && |
Shawn O. Pearce | 41fa7d2 | 2008-03-03 22:27:40 -0500 | [diff] [blame] | 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 | ) && |
Jeff King | 97a83fa | 2013-02-20 14:55:28 -0500 | [diff] [blame] | 156 | get_needs $U >actual && |
Junio C Hamano | 3af8286 | 2008-05-23 22:28:56 -0700 | [diff] [blame] | 157 | test_cmp expect actual |
Shawn O. Pearce | 41fa7d2 | 2008-03-03 22:27:40 -0500 | [diff] [blame] | 158 | ' |
| 159 | |
Shawn O. Pearce | cf7f929 | 2008-03-02 21:35:33 -0500 | [diff] [blame] | 160 | test_done |