threads / discuss / 38229

Question on for-each-ref and --contains

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

## tl;dr

3 messages between Dec 23, 2014 and Dec 23, 2014.

replies: 2people: 3as markdown or json

St. Blind· Dec 23, 2014, 07:50 UTC · lore
Hi.

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?

Thank you in advance, Blind.

Øystein Walle· Dec 23, 2014, 08:19 UTC · re: St. Blind · lore

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

St. Blind <st.s.blind <at> gmail.com> writes:
Show 5 quoted lines
> 
> 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.
> 
 
`git branch --merged foo` will list branches that are merged in the history
of 'foo'. And the equivalent is true for `--contains`. Not sure if that will
solve everything, though.
Øsse
Jeff King· Dec 23, 2014, 08:52 UTC · re: St. Blind · lore

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

On Tue, Dec 23, 2014 at 09:50:50AM +0200, St. Blind wrote:
Show 12 quoted lines
> 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

← back to recent threads