On Thu, 2 Nov 2017 12:41:44 -0700 Stefan Beller <sbeller@xxxxxxxxxx> wrote: > @@ -239,6 +239,8 @@ void traverse_commit_list(struct rev_info *revs, > if (commit->tree) > add_pending_tree(revs, commit->tree); > show_commit(commit, data); > + if (revs->tree_blobs_in_commit_order) > + traverse_trees_and_blobs(revs, &csp, show_object, data); > } > traverse_trees_and_blobs(revs, &csp, show_object, data); > I would have expected add_pending_tree() above to no longer be invoked. If it still needs to be invoked, maybe add an explanation in the form of a comment or commit message. > +test_expect_success 'rev-list --in-commit-order' ' > + 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 && > + git rev-list --in-commit-order --objects HEAD >actual.raw && > + cut -c 1-40 >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 > +' Would it be useful to have another test without --in-commit-order, so that we can see the difference (and ensure that existing behavior is unchanged)?