diff --git a/revision.c b/revision.c index 38a8d1b937..12cd0529a5 100644 --- a/revision.c +++ b/revision.c @@ -313,12 +313,16 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit) case REV_TREE_NEW: if (revs->remove_empty_trees && rev_same_tree_as_empty(p->tree)) { - /* We are adding all the specified paths from - * this parent, so the parents of it is - * not interesting, but the difference between - * this parent and us still is interesting. + /* We are adding all the specified + * paths from this parent, so the + * history beyond this parent is not + * interesting. Remove its parents + * (they are grandparents for us). + * IOW, we pretend this parent is a + * "root" commit. */ - p->object.flags |= UNINTERESTING; + parse_commit(p); + p->parents = NULL; } /* fallthrough */ case REV_TREE_DIFFERENT: