Alex Riesen | 57c7d9a | 2006-07-25 01:23:03 +0200 | [diff] [blame] | 1 | #!/bin/sh |
| 2 | |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 3 | test_description='git rev-list trivial path optimization test |
| 4 | |
| 5 | d/z1 |
| 6 | b0 b1 |
| 7 | o------------------------*----o master |
| 8 | / / |
| 9 | o---------o----o----o----o side |
| 10 | a0 c0 c1 a1 c2 |
| 11 | d/f0 d/f1 |
| 12 | d/z0 |
| 13 | |
| 14 | ' |
Alex Riesen | 57c7d9a | 2006-07-25 01:23:03 +0200 | [diff] [blame] | 15 | |
| 16 | . ./test-lib.sh |
| 17 | |
| 18 | test_expect_success setup ' |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 19 | echo Hello >a && |
| 20 | mkdir d && |
| 21 | echo World >d/f && |
| 22 | echo World >d/z && |
| 23 | git add a d && |
| 24 | test_tick && |
| 25 | git commit -m "Initial commit" && |
| 26 | git rev-parse --verify HEAD && |
| 27 | git tag initial |
Alex Riesen | 57c7d9a | 2006-07-25 01:23:03 +0200 | [diff] [blame] | 28 | ' |
| 29 | |
| 30 | test_expect_success path-optimization ' |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 31 | test_tick && |
| 32 | commit=$(echo "Unchanged tree" | git commit-tree "HEAD^{tree}" -p HEAD) && |
| 33 | test $(git rev-list $commit | wc -l) = 2 && |
| 34 | test $(git rev-list $commit -- . | wc -l) = 1 |
Alex Riesen | 57c7d9a | 2006-07-25 01:23:03 +0200 | [diff] [blame] | 35 | ' |
| 36 | |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 37 | test_expect_success 'further setup' ' |
| 38 | git checkout -b side && |
| 39 | echo Irrelevant >c && |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 40 | echo Irrelevant >d/f && |
| 41 | git add c d/f && |
| 42 | test_tick && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 43 | git commit -m "Side makes an irrelevant commit" && |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 44 | git tag side_c0 && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 45 | echo "More Irrelevancy" >c && |
| 46 | git add c && |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 47 | test_tick && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 48 | git commit -m "Side makes another irrelevant commit" && |
| 49 | echo Bye >a && |
| 50 | git add a && |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 51 | test_tick && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 52 | git commit -m "Side touches a" && |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 53 | git tag side_a1 && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 54 | echo "Yet more Irrelevancy" >c && |
| 55 | git add c && |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 56 | test_tick && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 57 | git commit -m "Side makes yet another irrelevant commit" && |
| 58 | git checkout master && |
| 59 | echo Another >b && |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 60 | echo Munged >d/z && |
| 61 | git add b d/z && |
| 62 | test_tick && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 63 | git commit -m "Master touches b" && |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 64 | git tag master_b0 && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 65 | git merge side && |
| 66 | echo Touched >b && |
| 67 | git add b && |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 68 | test_tick && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 69 | git commit -m "Master touches b again" |
| 70 | ' |
| 71 | |
| 72 | test_expect_success 'path optimization 2' ' |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 73 | git rev-parse side_a1 initial >expected && |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 74 | git rev-list HEAD -- a >actual && |
Jeff King | 82ebb0b | 2008-03-12 17:36:36 -0400 | [diff] [blame] | 75 | test_cmp expected actual |
Junio C Hamano | bab36bf | 2007-03-22 23:22:07 -0700 | [diff] [blame] | 76 | ' |
| 77 | |
Junio C Hamano | f577b92 | 2011-01-31 12:09:53 -0800 | [diff] [blame] | 78 | test_expect_success 'pathspec with leading path' ' |
| 79 | git rev-parse master^ master_b0 side_c0 initial >expected && |
| 80 | git rev-list HEAD -- d >actual && |
| 81 | test_cmp expected actual |
| 82 | ' |
| 83 | |
| 84 | test_expect_success 'pathspec with glob (1)' ' |
| 85 | git rev-parse master^ master_b0 side_c0 initial >expected && |
| 86 | git rev-list HEAD -- "d/*" >actual && |
| 87 | test_cmp expected actual |
| 88 | ' |
| 89 | |
| 90 | test_expect_success 'pathspec with glob (2)' ' |
| 91 | git rev-parse side_c0 initial >expected && |
| 92 | git rev-list HEAD -- "d/[a-m]*" >actual && |
| 93 | test_cmp expected actual |
| 94 | ' |
| 95 | |
Alex Riesen | 57c7d9a | 2006-07-25 01:23:03 +0200 | [diff] [blame] | 96 | test_done |