Subject: Re: Question on for-each-ref and --contains

From: Jeff King <[email-masked]>
Date: Tue, 23 Dec 2014 03:52:14 -0500

On Tue, Dec 23, 2014 at 09:50:50AM +0200, St. Blind wrote:

> In order to make some analyses here I had to build certain report
> lists of our remote refs, based on various "containing" and "merged"
> rules. We have more than hundred such refs at a time usually. So my
> poor script which tries to make decisions with the help of rev-list
> for each ref on each arbitrary commit is not really fast. The
> git-branch --contains and --merged are not very handy too, because the
> output is not really flexible, and the --merged works on HEAD only.
> 
> Do you think is a good idea to have the option "--contains" in
> for-each-ref too (and/or in rev-list directly)?
> If yes, then probably also the --(no-)merged options, but hopefully
> with the arbitrary commit this time?

Yes, it's absolutely a good idea to teach for-each-ref these options.
This is something I've been meaning to work on for a while. This is at
least the second time it has been mentioned in the past week or so, too.
Maybe I'll try to move it forward soon. The last attempt got stuck on
factoring out a single universal "--contains" traversal (we have 2
implementations):

  http://thread.gmane.org/gmane.comp.version-control.git/252472

I don't think there was any particular blocker besides time to look at
and think about it. We need to be very sure of the termination
requirements for the traversal (there was some discussion in the thread,
but I think I convinced myself that some of the optimization suggestions
there could return wrong answers for some cases).

-Peff