Jeff King <peff@xxxxxxxx> writes: > On Fri, Mar 23, 2012 at 10:38:32AM -0700, Junio C Hamano wrote: > >> Jeff King <peff@xxxxxxxx> writes: >> >> > No, I think that is the only way to do it. The algorithm run by rev-list >> > in that case should be optimal, so there is nothing to improve there. >> > Syntactically, it's a little bit of a pain because there is no way to >> > tell rev-list "--all, except for this one branch" short of using grep. >> > We could add a new syntax for that, but I'm not sure what it would look >> > like (or if it would be any easier on the eyes than what you have). >> >> We discussed --exclude-refs="refs/tags/expermental-*" that would affect >> how --all, --heads, and friends are processed several weeks ago, didn't >> we? > > Gmane seems to be down at the moment, but I think the thread you are > talking about can be found here: > > http://mid.gmane.org/7v4nuvghfk.fsf@xxxxxxxxxxxxxxxxxxxxxxxx > http://mid.gmane.org/4F391F5C.1000400@xxxxxxxxxxxx > http://mid.gmane.org/7vaa4meat5.fsf@xxxxxxxxxxxxxxxxxxxxxxxx > > It talks about excluding from the positive side, like: > > git rev-list --all --exclude-ref=refs/heads/foo > > That can also be extended to the negative side, like: > > git rev-list refs/heads/foo --not --all --exclude-ref=refs/heads/foo > > though it is slightly confusing to read due to the double negation (you > are "--not" "--exclude"-ing the ref). The confusion comes only if you do not differentiate two independent concepts, I think. --all and --exclude-ref are about what the starting points of the traversal (i.e. what we would call add_rev_cmdline() and add_pending_sha1() with), and --not is about the color in which these pending objects will be painted. The callpath leading to revisions.c::handle_one_ref() from setup_revisions() must be revamped, so that "--all" does not immediately put them directly in the pending array, but later "--exclude-ref" can subtract from the set, before the starting points are determined and painted in their colors, once we add --exclude-ref support. -- 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