#!/bin/sh test_description='rev-list testing in-commit-order' . ./test-lib.sh test_expect_success 'setup a commit history with trees, blobs' ' for x in one two three four do echo $x >$x && git add $x && git commit -m "add file $x" || return 1 done && for x in four three do git rm $x && git commit -m "remove $x" || return 1 done ' test_expect_success 'rev-list --in-commit-order' ' git rev-list --in-commit-order --objects HEAD >actual.raw && cut -d" " -f1 >actual <actual.raw && git cat-file --batch-check="%(objectname)" >expect.raw <<-\EOF && HEAD^{commit} HEAD^{tree} HEAD^{tree}:one HEAD^{tree}:two HEAD~1^{commit} HEAD~1^{tree} HEAD~1^{tree}:three HEAD~2^{commit} HEAD~2^{tree} HEAD~2^{tree}:four HEAD~3^{commit} # HEAD~3^{tree} skipped, same as HEAD~1^{tree} HEAD~4^{commit} # HEAD~4^{tree} skipped, same as HEAD^{tree} HEAD~5^{commit} HEAD~5^{tree} EOF grep -v "#" >expect <expect.raw && test_cmp expect actual ' test_expect_success 'rev-list lists blobs and trees after commits' ' git rev-list --objects HEAD >actual.raw && cut -d" " -f1 >actual <actual.raw && git cat-file --batch-check="%(objectname)" >expect.raw <<-\EOF && HEAD^{commit} HEAD~1^{commit} HEAD~2^{commit} HEAD~3^{commit} HEAD~4^{commit} HEAD~5^{commit} HEAD^{tree} HEAD^{tree}:one HEAD^{tree}:two HEAD~1^{tree} HEAD~1^{tree}:three HEAD~2^{tree} HEAD~2^{tree}:four # HEAD~3^{tree} skipped, same as HEAD~1^{tree} # HEAD~4^{tree} skipped, same as HEAD^{tree} HEAD~5^{tree} EOF grep -v "#" >expect <expect.raw && test_cmp expect actual ' test_done