diff --git a/rev-list.c b/rev-list.c index 309070fedd..846aa2f79e 100644 --- a/rev-list.c +++ b/rev-list.c @@ -227,6 +227,17 @@ static void mark_parents_uninteresting(struct commit *commit) struct commit *commit = parents->item; commit->object.flags |= UNINTERESTING; + /* + * Normally we haven't parsed the parent + * yet, so we won't have a parent of a parent + * here. However, it may turn out that we've + * reached this commit some other way (where it + * wasn't uninteresting), in which case we need + * to mark its parents recursively too.. + */ + if (commit->parents) + mark_parents_uninteresting(commit); + /* * A missing commit is ok iff its parent is marked * uninteresting.