Thread (1 message) 1 message, 1 author, 2016-06-15

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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help