Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > On Mon, 5 Mar 2007, Junio C Hamano wrote: > >> This removes the flag internally used by revision traversal to >> decide which commits are indeed boundaries and renames it to >> CHILD_SHOWN. builtin-bundle uses the symbol for its >> verification, but I think the logic it uses it is wrong. The >> flag is still useful but it is local to the git-bundle, so it is >> renamed to PREREQ_MARK. > > The idea was to bail out of revision walking when that prerequisite was > found, _even_ if it happened to be uninteresting. > > Just marking the parents uninteresting unless they are prerequisites would > be better, probably. > >> >> i = req_nr; >> while (i && (commit = get_revision(&revs))) >> - if (commit->object.flags & BOUNDARY_SHOW) >> + if (commit->object.flags & PREREQ_MARK) >> i--; > > The above-mentioned idea, then would be: instead of just i--; do I explicitly wanted to avoid that. If the generated bundle had prereqs that are not independent of each other, doing that would hide some prereqs. > This should help performance, as not all reachable commits are traversed > any more. You prevented that with "while (i &&" part already, didn't you? > Wasn't --skip meant for something like gitweb, where you just want to skip > the first <n> commits from the list, but do not want to change the list > otherwise? Yes, but does the patch change that? > >> @@ -1305,6 +1309,9 @@ struct commit *get_revision(struct rev_info *revs) >> case -1: >> break; >> case 0: >> + /* Although we grabbed it, it is not shown. */ >> + if (c) >> + c->object.flags &= ~SHOWN; >> c = NULL; > > Is this really relevant in practice? Absolutely. But I have further updates on this series. - 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