Re: Listing commits that are _exclusively_ available on a given branch
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:53:22
Jeff King [off-list ref] writes:
On Fri, Mar 23, 2012 at 10:38:32AM -0700, Junio C Hamano wrote:quoted
Jeff King [off-list ref] writes:quoted
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@alter.siamese.dyndns.org http://mid.gmane.org/4F391F5C.1000400@alum.mit.edu http://mid.gmane.org/7vaa4meat5.fsf@alter.siamese.dyndns.org 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.