| #!/bin/sh |
| |
| test_description='git rev-list trivial path optimization test' |
| |
| . ./test-lib.sh |
| |
| test_expect_success setup ' |
| echo Hello > a && |
| git add a && |
| git commit -m "Initial commit" a && |
| initial=$(git rev-parse --verify HEAD) |
| ' |
| |
| test_expect_success path-optimization ' |
| commit=$(echo "Unchanged tree" | git commit-tree "HEAD^{tree}" -p HEAD) && |
| test $(git rev-list $commit | wc -l) = 2 && |
| test $(git rev-list $commit -- . | wc -l) = 1 |
| ' |
| |
| test_expect_success 'further setup' ' |
| git checkout -b side && |
| echo Irrelevant >c && |
| git add c && |
| git commit -m "Side makes an irrelevant commit" && |
| echo "More Irrelevancy" >c && |
| git add c && |
| git commit -m "Side makes another irrelevant commit" && |
| echo Bye >a && |
| git add a && |
| git commit -m "Side touches a" && |
| side=$(git rev-parse --verify HEAD) && |
| echo "Yet more Irrelevancy" >c && |
| git add c && |
| git commit -m "Side makes yet another irrelevant commit" && |
| git checkout master && |
| echo Another >b && |
| git add b && |
| git commit -m "Master touches b" && |
| git merge side && |
| echo Touched >b && |
| git add b && |
| git commit -m "Master touches b again" |
| ' |
| |
| test_expect_success 'path optimization 2' ' |
| ( echo "$side"; echo "$initial" ) >expected && |
| git rev-list HEAD -- a >actual && |
| test_cmp expected actual |
| ' |
| |
| test_done |