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