Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
| 3 | test_description='test describe |
| 4 | |
| 5 | B |
| 6 | .--------------o----o----o----x |
| 7 | / / / |
| 8 | o----o----o----o----o----. / |
| 9 | \ A c / |
| 10 | .------------o---o---o |
Shawn O. Pearce | 03e8b54 | 2010-04-12 16:25:29 -0700 | [diff] [blame] | 11 | D,R e |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 12 | ' |
| 13 | . ./test-lib.sh |
| 14 | |
| 15 | check_describe () { |
| 16 | expect="$1" |
| 17 | shift |
Shawn O. Pearce | 3291fe4 | 2008-03-03 20:09:38 -0500 | [diff] [blame] | 18 | R=$(git describe "$@" 2>err.actual) |
Shawn O. Pearce | be7bae0 | 2008-03-03 20:09:31 -0500 | [diff] [blame] | 19 | S=$? |
Shawn O. Pearce | 3291fe4 | 2008-03-03 20:09:38 -0500 | [diff] [blame] | 20 | cat err.actual >&3 |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 21 | test_expect_success "describe $*" ' |
Shawn O. Pearce | be7bae0 | 2008-03-03 20:09:31 -0500 | [diff] [blame] | 22 | test $S = 0 && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 23 | case "$R" in |
| 24 | $expect) echo happy ;; |
| 25 | *) echo "Oops - $R is not $expect"; |
| 26 | false ;; |
| 27 | esac |
| 28 | ' |
| 29 | } |
| 30 | |
| 31 | test_expect_success setup ' |
| 32 | |
| 33 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 34 | echo one >file && git add file && git commit -m initial && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 35 | one=$(git rev-parse HEAD) && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 36 | |
Junio C Hamano | 024ab97 | 2009-10-23 11:42:39 -0700 | [diff] [blame] | 37 | git describe --always HEAD && |
| 38 | |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 39 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 40 | echo two >file && git add file && git commit -m second && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 41 | two=$(git rev-parse HEAD) && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 42 | |
| 43 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 44 | echo three >file && git add file && git commit -m third && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 45 | |
| 46 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 47 | echo A >file && git add file && git commit -m A && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 48 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 49 | git tag -a -m A A && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 50 | |
| 51 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 52 | echo c >file && git add file && git commit -m c && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 53 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 54 | git tag c && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 55 | |
| 56 | git reset --hard $two && |
| 57 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 58 | echo B >side && git add side && git commit -m B && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 59 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 60 | git tag -a -m B B && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 61 | |
| 62 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 63 | git merge -m Merged c && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 64 | merged=$(git rev-parse HEAD) && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 65 | |
| 66 | git reset --hard $two && |
| 67 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 68 | echo D >another && git add another && git commit -m D && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 69 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 70 | git tag -a -m D D && |
Shawn O. Pearce | 03e8b54 | 2010-04-12 16:25:29 -0700 | [diff] [blame] | 71 | test_tick && |
| 72 | git tag -a -m R R && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 73 | |
| 74 | test_tick && |
| 75 | echo DD >another && git commit -a -m another && |
| 76 | |
| 77 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 78 | git tag e && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 79 | |
| 80 | test_tick && |
| 81 | echo DDD >another && git commit -a -m "yet another" && |
| 82 | |
| 83 | test_tick && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 84 | git merge -m Merged $merged && |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 85 | |
| 86 | test_tick && |
Junio C Hamano | 5be6007 | 2007-07-02 22:52:14 -0700 | [diff] [blame] | 87 | echo X >file && echo X >side && git add file side && |
Nanako Shiraishi | 3604e7c | 2008-09-03 17:59:29 +0900 | [diff] [blame] | 88 | git commit -m x |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 89 | |
| 90 | ' |
| 91 | |
| 92 | check_describe A-* HEAD |
| 93 | check_describe A-* HEAD^ |
Shawn O. Pearce | 03e8b54 | 2010-04-12 16:25:29 -0700 | [diff] [blame] | 94 | check_describe R-* HEAD^^ |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 95 | check_describe A-* HEAD^^2 |
| 96 | check_describe B HEAD^^2^ |
Shawn O. Pearce | 03e8b54 | 2010-04-12 16:25:29 -0700 | [diff] [blame] | 97 | check_describe R-* HEAD^^^ |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 98 | |
Shawn O. Pearce | 7e425c4 | 2008-10-13 07:39:46 -0700 | [diff] [blame] | 99 | check_describe c-* --tags HEAD |
| 100 | check_describe c-* --tags HEAD^ |
| 101 | check_describe e-* --tags HEAD^^ |
| 102 | check_describe c-* --tags HEAD^^2 |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 103 | check_describe B --tags HEAD^^2^ |
Thomas Rast | 7a0d61b | 2009-11-18 14:32:26 +0100 | [diff] [blame] | 104 | check_describe e --tags HEAD^^^ |
| 105 | |
| 106 | check_describe heads/master --all HEAD |
| 107 | check_describe tags/c-* --all HEAD^ |
| 108 | check_describe tags/e --all HEAD^^^ |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 109 | |
Santi Béjar | 518120e | 2008-02-25 10:43:33 +0100 | [diff] [blame] | 110 | check_describe B-0-* --long HEAD^^2^ |
Junio C Hamano | 4d4c3e1 | 2008-03-03 18:29:51 -0800 | [diff] [blame] | 111 | check_describe A-3-* --long HEAD^^2 |
Santi Béjar | 518120e | 2008-02-25 10:43:33 +0100 | [diff] [blame] | 112 | |
Mike Crowe | e00dd1e | 2013-05-17 21:56:18 +0100 | [diff] [blame] | 113 | check_describe c-7-* --tags |
| 114 | check_describe e-3-* --first-parent --tags |
| 115 | |
SZEDER Gábor | 2bd0706 | 2015-08-24 18:15:18 +0200 | [diff] [blame] | 116 | test_expect_success 'describe --contains defaults to HEAD without commit-ish' ' |
| 117 | echo "A^0" >expect && |
| 118 | git checkout A && |
| 119 | test_when_finished "git checkout -" && |
| 120 | git describe --contains >actual && |
| 121 | test_cmp expect actual |
| 122 | ' |
| 123 | |
Shawn O. Pearce | 81dc223 | 2008-12-26 14:02:01 -0800 | [diff] [blame] | 124 | : >err.expect |
Daniel Knittl-Frank | 1bba001 | 2017-12-11 18:24:54 +0100 | [diff] [blame] | 125 | check_describe tags/A --all A^0 |
Shawn O. Pearce | 81dc223 | 2008-12-26 14:02:01 -0800 | [diff] [blame] | 126 | test_expect_success 'no warning was displayed for A' ' |
| 127 | test_cmp err.expect err.actual |
| 128 | ' |
| 129 | |
Shawn O. Pearce | 3291fe4 | 2008-03-03 20:09:38 -0500 | [diff] [blame] | 130 | test_expect_success 'rename tag A to Q locally' ' |
| 131 | mv .git/refs/tags/A .git/refs/tags/Q |
| 132 | ' |
| 133 | cat - >err.expect <<EOF |
| 134 | warning: tag 'A' is really 'Q' here |
| 135 | EOF |
| 136 | check_describe A-* HEAD |
Junio C Hamano | b3e1900 | 2011-04-12 16:33:39 -0700 | [diff] [blame] | 137 | test_expect_success 'warning was displayed for Q' ' |
| 138 | test_i18ncmp err.expect err.actual |
Shawn O. Pearce | 3291fe4 | 2008-03-03 20:09:38 -0500 | [diff] [blame] | 139 | ' |
| 140 | test_expect_success 'rename tag Q back to A' ' |
| 141 | mv .git/refs/tags/Q .git/refs/tags/A |
| 142 | ' |
| 143 | |
Shawn O. Pearce | d1b28f5 | 2008-03-03 20:09:35 -0500 | [diff] [blame] | 144 | test_expect_success 'pack tag refs' 'git pack-refs' |
| 145 | check_describe A-* HEAD |
| 146 | |
Jean Privat | 9f67d2e | 2009-10-21 09:35:22 -0400 | [diff] [blame] | 147 | check_describe "A-*[0-9a-f]" --dirty |
| 148 | |
| 149 | test_expect_success 'set-up dirty work tree' ' |
| 150 | echo >>file |
| 151 | ' |
| 152 | |
| 153 | check_describe "A-*[0-9a-f]-dirty" --dirty |
| 154 | |
| 155 | check_describe "A-*[0-9a-f].mod" --dirty=.mod |
| 156 | |
| 157 | test_expect_success 'describe --dirty HEAD' ' |
| 158 | test_must_fail git describe --dirty HEAD |
| 159 | ' |
| 160 | |
Michael Dressel | 4ed19a3 | 2008-06-04 21:06:31 +0200 | [diff] [blame] | 161 | test_expect_success 'set-up matching pattern tests' ' |
| 162 | git tag -a -m test-annotated test-annotated && |
| 163 | echo >>file && |
| 164 | test_tick && |
| 165 | git commit -a -m "one more" && |
| 166 | git tag test1-lightweight && |
| 167 | echo >>file && |
| 168 | test_tick && |
| 169 | git commit -a -m "yet another" && |
| 170 | git tag test2-lightweight && |
| 171 | echo >>file && |
| 172 | test_tick && |
| 173 | git commit -a -m "even more" |
| 174 | |
| 175 | ' |
| 176 | |
| 177 | check_describe "test-annotated-*" --match="test-*" |
| 178 | |
| 179 | check_describe "test1-lightweight-*" --tags --match="test1-*" |
| 180 | |
| 181 | check_describe "test2-lightweight-*" --tags --match="test2-*" |
| 182 | |
Shawn O. Pearce | 14d4642 | 2008-07-03 02:32:45 +0000 | [diff] [blame] | 183 | check_describe "test2-lightweight-*" --long --tags --match="test2-*" HEAD^ |
| 184 | |
Max Kirillov | da769d2 | 2017-09-16 08:53:44 +0300 | [diff] [blame] | 185 | check_describe "test2-lightweight-*" --long --tags --match="test1-*" --match="test2-*" HEAD^ |
Jacob Keller | 43f8080 | 2017-01-18 15:06:07 -0800 | [diff] [blame] | 186 | |
| 187 | check_describe "test2-lightweight-*" --long --tags --match="test1-*" --no-match --match="test2-*" HEAD^ |
| 188 | |
Max Kirillov | da769d2 | 2017-09-16 08:53:44 +0300 | [diff] [blame] | 189 | check_describe "test1-lightweight-*" --long --tags --match="test1-*" --match="test3-*" HEAD |
| 190 | |
| 191 | check_describe "test1-lightweight-*" --long --tags --match="test3-*" --match="test1-*" HEAD |
| 192 | |
Max Kirillov | 6d68b2a | 2017-09-20 04:10:10 +0300 | [diff] [blame] | 193 | test_expect_success 'set-up branches' ' |
| 194 | git branch branch_A A && |
| 195 | git branch branch_C c && |
| 196 | git update-ref refs/remotes/origin/remote_branch_A "A^{commit}" && |
| 197 | git update-ref refs/remotes/origin/remote_branch_C "c^{commit}" && |
| 198 | git update-ref refs/original/original_branch_A test-annotated~2 |
| 199 | ' |
| 200 | |
| 201 | check_describe "heads/branch_A*" --all --match="branch_*" --exclude="branch_C" HEAD |
| 202 | |
| 203 | check_describe "remotes/origin/remote_branch_A*" --all --match="origin/remote_branch_*" --exclude="origin/remote_branch_C" HEAD |
| 204 | |
| 205 | check_describe "original/original_branch_A*" --all test-annotated~1 |
| 206 | |
| 207 | test_expect_success '--match does not work for other types' ' |
| 208 | test_must_fail git describe --all --match="*original_branch_*" test-annotated~1 |
| 209 | ' |
| 210 | |
| 211 | test_expect_success '--exclude does not work for other types' ' |
| 212 | R=$(git describe --all --exclude="any_pattern_even_not_matching" test-annotated~1) && |
| 213 | case "$R" in |
| 214 | *original_branch_A*) echo "fail: Found unknown reference $R with --exclude" |
| 215 | false;; |
| 216 | *) echo ok: Found some known type;; |
| 217 | esac |
| 218 | ' |
| 219 | |
Junio C Hamano | 118aa4a | 2013-07-18 14:11:35 -0700 | [diff] [blame] | 220 | test_expect_success 'name-rev with exact tags' ' |
| 221 | echo A >expect && |
| 222 | tag_object=$(git rev-parse refs/tags/A) && |
| 223 | git name-rev --tags --name-only $tag_object >actual && |
| 224 | test_cmp expect actual && |
| 225 | |
| 226 | echo "A^0" >expect && |
| 227 | tagged_commit=$(git rev-parse "refs/tags/A^0") && |
| 228 | git name-rev --tags --name-only $tagged_commit >actual && |
| 229 | test_cmp expect actual |
| 230 | ' |
| 231 | |
Michael J Gruber | a24fa65 | 2017-09-07 16:02:21 +0200 | [diff] [blame] | 232 | test_expect_success 'name-rev --all' ' |
| 233 | >expect.unsorted && |
| 234 | for rev in $(git rev-list --all) |
| 235 | do |
| 236 | git name-rev $rev >>expect.unsorted |
| 237 | done && |
| 238 | sort <expect.unsorted >expect && |
| 239 | git name-rev --all >actual.unsorted && |
| 240 | sort <actual.unsorted >actual && |
| 241 | test_cmp expect actual |
| 242 | ' |
| 243 | |
| 244 | test_expect_success 'name-rev --stdin' ' |
| 245 | >expect.unsorted && |
| 246 | for rev in $(git rev-list --all) |
| 247 | do |
| 248 | name=$(git name-rev --name-only $rev) && |
| 249 | echo "$rev ($name)" >>expect.unsorted |
| 250 | done && |
| 251 | sort <expect.unsorted >expect && |
| 252 | git rev-list --all | git name-rev --stdin >actual.unsorted && |
| 253 | sort <actual.unsorted >actual && |
| 254 | test_cmp expect actual |
| 255 | ' |
| 256 | |
Junio C Hamano | adfc185 | 2013-07-18 14:46:51 -0700 | [diff] [blame] | 257 | test_expect_success 'describe --contains with the exact tags' ' |
| 258 | echo "A^0" >expect && |
| 259 | tag_object=$(git rev-parse refs/tags/A) && |
| 260 | git describe --contains $tag_object >actual && |
| 261 | test_cmp expect actual && |
| 262 | |
| 263 | echo "A^0" >expect && |
| 264 | tagged_commit=$(git rev-parse "refs/tags/A^0") && |
| 265 | git describe --contains $tagged_commit >actual && |
| 266 | test_cmp expect actual |
| 267 | ' |
| 268 | |
Jacob Keller | 43f8080 | 2017-01-18 15:06:07 -0800 | [diff] [blame] | 269 | test_expect_success 'describe --contains and --match' ' |
| 270 | echo "A^0" >expect && |
| 271 | tagged_commit=$(git rev-parse "refs/tags/A^0") && |
| 272 | test_must_fail git describe --contains --match="B" $tagged_commit && |
| 273 | git describe --contains --match="B" --match="A" $tagged_commit >actual && |
| 274 | test_cmp expect actual |
| 275 | ' |
| 276 | |
Jacob Keller | 77d21f2 | 2017-01-18 15:06:08 -0800 | [diff] [blame] | 277 | test_expect_success 'describe --exclude' ' |
| 278 | echo "c~1" >expect && |
| 279 | tagged_commit=$(git rev-parse "refs/tags/A^0") && |
| 280 | test_must_fail git describe --contains --match="B" $tagged_commit && |
| 281 | git describe --contains --match="?" --exclude="A" $tagged_commit >actual && |
| 282 | test_cmp expect actual |
| 283 | ' |
| 284 | |
Jacob Keller | 43f8080 | 2017-01-18 15:06:07 -0800 | [diff] [blame] | 285 | test_expect_success 'describe --contains and --no-match' ' |
| 286 | echo "A^0" >expect && |
| 287 | tagged_commit=$(git rev-parse "refs/tags/A^0") && |
| 288 | git describe --contains --match="B" --no-match $tagged_commit >actual && |
| 289 | test_cmp expect actual |
| 290 | ' |
| 291 | |
Stefan Beller | b0176ce | 2017-03-21 15:57:18 -0700 | [diff] [blame] | 292 | test_expect_success 'setup and absorb a submodule' ' |
| 293 | test_create_repo sub1 && |
| 294 | test_commit -C sub1 initial && |
| 295 | git submodule add ./sub1 && |
| 296 | git submodule absorbgitdirs && |
| 297 | git commit -a -m "add submodule" && |
| 298 | git describe --dirty >expect && |
| 299 | git describe --broken >out && |
| 300 | test_cmp expect out |
| 301 | ' |
| 302 | |
Ville Skyttä | 6412757 | 2017-06-25 13:20:41 +0300 | [diff] [blame] | 303 | test_expect_success 'describe chokes on severely broken submodules' ' |
Stefan Beller | b0176ce | 2017-03-21 15:57:18 -0700 | [diff] [blame] | 304 | mv .git/modules/sub1/ .git/modules/sub_moved && |
| 305 | test_must_fail git describe --dirty |
| 306 | ' |
Stefan Beller | 2deda00 | 2017-11-02 12:41:42 -0700 | [diff] [blame] | 307 | test_expect_success 'describe ignoring a broken submodule' ' |
Stefan Beller | b0176ce | 2017-03-21 15:57:18 -0700 | [diff] [blame] | 308 | git describe --broken >out && |
Michael J Gruber | ac9b240 | 2017-09-07 16:02:22 +0200 | [diff] [blame] | 309 | test_when_finished "mv .git/modules/sub_moved .git/modules/sub1" && |
Stefan Beller | b0176ce | 2017-03-21 15:57:18 -0700 | [diff] [blame] | 310 | grep broken out |
| 311 | ' |
| 312 | |
Stefan Beller | 644eb60 | 2017-11-15 18:00:39 -0800 | [diff] [blame] | 313 | test_expect_success 'describe a blob at a directly tagged commit' ' |
| 314 | echo "make it a unique blob" >file && |
| 315 | git add file && git commit -m "content in file" && |
| 316 | git tag -a -m "latest annotated tag" unique-file && |
| 317 | git describe HEAD:file >actual && |
| 318 | echo "unique-file:file" >expect && |
| 319 | test_cmp expect actual |
| 320 | ' |
| 321 | |
| 322 | test_expect_success 'describe a blob with its first introduction' ' |
| 323 | git commit --allow-empty -m "empty commit" && |
| 324 | git rm file && |
| 325 | git commit -m "delete blob" && |
| 326 | git revert HEAD && |
| 327 | git commit --allow-empty -m "empty commit" && |
| 328 | git describe HEAD:file >actual && |
| 329 | echo "unique-file:file" >expect && |
| 330 | test_cmp expect actual |
| 331 | ' |
| 332 | |
| 333 | test_expect_success 'describe directly tagged blob' ' |
| 334 | git tag test-blob unique-file:file && |
| 335 | git describe test-blob >actual && |
| 336 | echo "unique-file:file" >expect && |
| 337 | # suboptimal: we rather want to see "test-blob" |
| 338 | test_cmp expect actual |
| 339 | ' |
| 340 | |
| 341 | test_expect_success 'describe tag object' ' |
| 342 | git tag test-blob-1 -a -m msg unique-file:file && |
| 343 | test_must_fail git describe test-blob-1 2>actual && |
| 344 | test_i18ngrep "fatal: test-blob-1 is neither a commit nor blob" actual |
| 345 | ' |
| 346 | |
Michael J Gruber | 31625b3 | 2017-09-07 16:02:23 +0200 | [diff] [blame] | 347 | test_expect_failure ULIMIT_STACK_SIZE 'name-rev works in a deep repo' ' |
| 348 | i=1 && |
| 349 | while test $i -lt 8000 |
| 350 | do |
| 351 | echo "commit refs/heads/master |
| 352 | committer A U Thor <author@example.com> $((1000000000 + $i * 100)) +0200 |
| 353 | data <<EOF |
| 354 | commit #$i |
| 355 | EOF" |
| 356 | test $i = 1 && echo "from refs/heads/master^0" |
| 357 | i=$(($i + 1)) |
| 358 | done | git fast-import && |
| 359 | git checkout master && |
| 360 | git tag far-far-away HEAD^ && |
| 361 | echo "HEAD~4000 tags/far-far-away~3999" >expect && |
| 362 | git name-rev HEAD~4000 >actual && |
| 363 | test_cmp expect actual && |
| 364 | run_with_limited_stack git name-rev HEAD~4000 >actual && |
| 365 | test_cmp expect actual |
| 366 | ' |
| 367 | |
| 368 | test_expect_success ULIMIT_STACK_SIZE 'describe works in a deep repo' ' |
| 369 | git tag -f far-far-away HEAD~7999 && |
| 370 | echo "far-far-away" >expect && |
| 371 | git describe --tags --abbrev=0 HEAD~4000 >actual && |
| 372 | test_cmp expect actual && |
| 373 | run_with_limited_stack git describe --tags --abbrev=0 HEAD~4000 >actual && |
| 374 | test_cmp expect actual |
| 375 | ' |
| 376 | |
Daniel Knittl-Frank | 1bba001 | 2017-12-11 18:24:54 +0100 | [diff] [blame] | 377 | check_describe tags/A --all A |
| 378 | check_describe tags/c --all c |
| 379 | check_describe heads/branch_A --all --match='branch_*' branch_A |
| 380 | |
Jeff King | a8e7a2b | 2018-02-12 12:23:06 -0500 | [diff] [blame] | 381 | test_expect_success 'describe complains about tree object' ' |
| 382 | test_must_fail git describe HEAD^{tree} |
| 383 | ' |
| 384 | |
| 385 | test_expect_success 'describe complains about missing object' ' |
| 386 | test_must_fail git describe $_z40 |
| 387 | ' |
| 388 | |
Junio C Hamano | 5312ab1 | 2007-01-13 18:37:32 -0800 | [diff] [blame] | 389 | test_done |