On Fri, Jul 07, 2017 at 05:14:07AM -0400, Jeff King wrote: > @@ -3132,7 +3132,10 @@ static struct commit *get_revision_1(struct rev_info *revs) > if (revs->max_age != -1 && > (commit->date < revs->max_age)) > continue; > - if (add_parents_to_list(revs, commit, &revs->commits, NULL) < 0) { > + > + if (revs->reflog_info) > + try_to_simplify_commit(revs, commit); > + else if (add_parents_to_list(revs, commit, &revs->commits, NULL) < 0) { > if (!revs->ignore_missing_links) > die("Failed to traverse parents of commit %s", > oid_to_hex(&commit->object.oid)); There's one other subtle change from v1 here. In my original, we called try_to_simplify_commit() much later, and then we had to check whether it marked the commit as TREESAME. That felt really hacky to me, and the reason is because I was using the function wrong. The intent is for try_to_simplify to be called earlier (i.e., here), when we start looking at the commit's parents. And then the TREESAME flag it sets is later picked up by get_commit_action(), which is called by simplify_commit(), which is used later in get_revision_1(). So by calling try_to_simplify here, where it would normally be called for a non-reflog walk, that's all we have to do. I don't think the original patch had any visible bugs, but this way is much cleaner and more future-proof. -Peff