On Mon, 5 Nov 2007, Linus Torvalds wrote: > > Here's a possible cleanup patch. It's on top of the enhanced > --early-output format commit, and in fact fixes a stupid bug in that > commit ("return -1" vs "return NULL"), but that bug-fix is really an > independent thing. .. and this extends a bit further on the notion. It basically means that "rev->dense" can now be ignored outside of revision.c, because we'll just set TREECHANGE automatically when seeing a non-merge regular commit when --sparse is being used. So it's not just a simplification, it's a performance optimization too! Although since nobody sane would ever use --sparse, I guess nobody really cares. Linus --- builtin-log.c | 8 ++------ revision.c | 9 +++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/builtin-log.c b/builtin-log.c index 76c84e2..d6845bc 100644 --- a/builtin-log.c +++ b/builtin-log.c @@ -88,13 +88,9 @@ static int estimate_commit_count(struct rev_info *rev, struct commit_list *list) while (list) { struct commit *commit = list->item; unsigned int flags = commit->object.flags; - list = list->next; - if (flags & UNINTERESTING) - continue; - if (!(flags & TREECHANGE) && rev->dense && single_parent(commit)) - continue; - n++; + if ((flags & TREECHANGE) && !(flags & UNINTERESTING)) + n++; } return n; } diff --git a/revision.c b/revision.c index 7a1ecba..02e9241 100644 --- a/revision.c +++ b/revision.c @@ -325,6 +325,15 @@ static void try_to_simplify_commit(struct rev_info *revs, struct commit *commit) return; } + /* + * Normal non-merge commit? If we don't want to make the + * history dense, we consider it always to be a change.. + */ + if (!revs->dense && !commit->parents->next) { + commit->object.flags |= TREECHANGE; + return; + } + pp = &commit->parents; while ((parent = *pp) != NULL) { struct commit *p = parent->item; - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html