#!/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