(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: { (SQ <'git rev-list trivial path optimization test\n'> <'\n'> <' d/z1\n'> <' b0 b1\n'> <' o------------------------*----o master\n'> <' / /\n'> <' o---------o----o----o----o side\n'> <' a0 c0 c1 a1 c2\n'> <' d/f0 d/f1\n'> <' d/z0\n'> <'\n'> ) } spids: [4] ) ] ) (C {<.>} {<'./test-lib.sh'>}) (C {<test_expect_success>} {<setup>} { (SQ <'\n'> <'\techo Hello >a &&\n'> <'\tmkdir d &&\n'> <'\techo World >d/f &&\n'> <'\techo World >d/z &&\n'> <'\tgit add a d &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m "Initial commit" &&\n'> <'\tgit rev-parse --verify HEAD &&\n'> <'\tgit tag initial\n'> ) } ) (C {<test_expect_success>} {<path-optimization>} { (SQ <'\n'> <'\ttest_tick &&\n'> <'\tcommit=$(echo "Unchanged tree" | git commit-tree "HEAD^{tree}" -p HEAD) &&\n'> <'\ttest $(git rev-list $commit | wc -l) = 2 &&\n'> <'\ttest $(git rev-list $commit -- . | wc -l) = 1\n'> ) } ) (C {<test_expect_success>} {(SQ <'further setup'>)} { (SQ <'\n'> <'\tgit checkout -b side &&\n'> <'\techo Irrelevant >c &&\n'> <'\techo Irrelevant >d/f &&\n'> <'\tgit add c d/f &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m "Side makes an irrelevant commit" &&\n'> <'\tgit tag side_c0 &&\n'> <'\techo "More Irrelevancy" >c &&\n'> <'\tgit add c &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m "Side makes another irrelevant commit" &&\n'> <'\techo Bye >a &&\n'> <'\tgit add a &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m "Side touches a" &&\n'> <'\tgit tag side_a1 &&\n'> <'\techo "Yet more Irrelevancy" >c &&\n'> <'\tgit add c &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m "Side makes yet another irrelevant commit" &&\n'> <'\tgit checkout master &&\n'> <'\techo Another >b &&\n'> <'\techo Munged >d/z &&\n'> <'\tgit add b d/z &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m "Master touches b" &&\n'> <'\tgit tag master_b0 &&\n'> <'\tgit merge side &&\n'> <'\techo Touched >b &&\n'> <'\tgit add b &&\n'> <'\ttest_tick &&\n'> <'\tgit commit -m "Master touches b again"\n'> ) } ) (C {<test_expect_success>} {(SQ <'path optimization 2'>)} { (SQ <'\n'> <'\tgit rev-parse side_a1 initial >expected &&\n'> <'\tgit rev-list HEAD -- a >actual &&\n'> <'\ttest_cmp expected actual\n'> ) } ) (C {<test_expect_success>} {(SQ <'pathspec with leading path'>)} { (SQ <'\n'> <'\tgit rev-parse master^ master_b0 side_c0 initial >expected &&\n'> <'\tgit rev-list HEAD -- d >actual &&\n'> <'\ttest_cmp expected actual\n'> ) } ) (C {<test_expect_success>} {(SQ <'pathspec with glob (1)'>)} { (SQ <'\n'> <'\tgit rev-parse master^ master_b0 side_c0 initial >expected &&\n'> <'\tgit rev-list HEAD -- "d/*" >actual &&\n'> <'\ttest_cmp expected actual\n'> ) } ) (C {<test_expect_success>} {(SQ <'pathspec with glob (2)'>)} { (SQ <'\n'> <'\tgit rev-parse side_c0 initial >expected &&\n'> <'\tgit rev-list HEAD -- "d/[a-m]*" >actual &&\n'> <'\ttest_cmp expected actual\n'> ) } ) (C {<test_done>}) ] )