threads / discuss / 18853

help with git query

Subject: help with git query

## tl;dr

6 messages between Apr 13, 2009 and Apr 14, 2009.

replies: 5people: 4as markdown or json

E R· Apr 13, 2009, 18:51 UTC · lore
Hi,
I'd like to generate the following report from git:
for each branch:
  - info about the latest commit on that branch (date and time, message, etc.)
  - info about the last time it was merged into master

What commands can I run to figure this out? I think I can figure out the first one - it's the second one I'm having trouble with.

And if it would easier to do it from the C API (or something like the perl Git::PurePerl module) I'd be interested in knowing that, too.

Thanks, ER

Nathan W. Panike· Apr 13, 2009, 20:31 UTC · re: E R · lore

Re: help with git query

On Mon, Apr 13, 2009 at 1:51 PM, E R <pc88mxer@gmail.com> wrote:
Show 6 quoted lines
> Hi,
>
> I'd like to generate the following report from git:
>
> for each branch:
>  - info about the latest commit on that branch (date and time, message, etc.)
Depending on what you want to do---from a bash shell, you could do:
for i in $(git branch -a | cut -b3-); do echo $i; git show -s $i; echo; done
>  - info about the last time it was merged into master

for i in $(git branch -a | cut -b3-); do echo $i; git show -s $(git merge-base $i master); echo; done

Show 14 quoted lines
>
> What commands can I run to figure this out? I think I can figure out
> the first one - it's the second one I'm having trouble with.
>
> And if it would easier to do it from the C API (or something like the
> perl Git::PurePerl module) I'd be interested in knowing that, too.
>
> Thanks,
> ER
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
E R· Apr 13, 2009, 20:57 UTC · re: Nathan W. Panike · lore

Re: help with git query

Thanks - that's very helpful.

For the second question, is it possible to find the commit that represents the merge in the master branch?

i.e.
   git merge-base XXX master

returns the commit in branch XXX that got merged into master. I'd like to also find the commit that represents the merge in master.

On Mon, Apr 13, 2009 at 3:31 PM, Nathan W. Panike <nathan.panike@gmail.com> wrote:

Show 31 quoted lines
> On Mon, Apr 13, 2009 at 1:51 PM, E R <pc88mxer@gmail.com> wrote:
>> Hi,
>>
>> I'd like to generate the following report from git:
>>
>> for each branch:
>>  - info about the latest commit on that branch (date and time, message, etc.)
>
> Depending on what you want to do---from a bash shell, you could do:
>
> for i in $(git branch -a | cut -b3-); do echo $i; git show -s $i; echo; done
>
>>  - info about the last time it was merged into master
>
> for i in $(git branch -a | cut -b3-); do echo $i; git show -s $(git
> merge-base $i master); echo; done
>>
>> What commands can I run to figure this out? I think I can figure out
>> the first one - it's the second one I'm having trouble with.
>>
>> And if it would easier to do it from the C API (or something like the
>> perl Git::PurePerl module) I'd be interested in knowing that, too.
>>
>> Thanks,
>> ER
>> --
>> To unsubscribe from this list: send the line "unsubscribe git" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>
>
Nathan W. Panike· Apr 13, 2009, 22:33 UTC · re: E R · lore

Re: help with git query

On Mon, Apr 13, 2009 at 3:57 PM, E R <pc88mxer@gmail.com> wrote:
> Thanks - that's very helpful.
>
> For the second question, is it possible to find the commit that
> represents the merge in the master branch?
There might not be an actual commit, if the merge was a fast forward.
Show 7 quoted lines
>
> i.e.
>
>   git merge-base XXX master
>
> returns the commit in branch XXX that got merged into master. I'd like
> to also find the commit that represents the merge in master.
If one exists, I think this might do what you want:
git log --pretty=oneline master --not $(git merge-base XXX master) | tail -1
Show 34 quoted lines
> On Mon, Apr 13, 2009 at 3:31 PM, Nathan W. Panike
> <nathan.panike@gmail.com> wrote:
>> On Mon, Apr 13, 2009 at 1:51 PM, E R <pc88mxer@gmail.com> wrote:
>>> Hi,
>>>
>>> I'd like to generate the following report from git:
>>>
>>> for each branch:
>>>  - info about the latest commit on that branch (date and time, message, etc.)
>>
>> Depending on what you want to do---from a bash shell, you could do:
>>
>> for i in $(git branch -a | cut -b3-); do echo $i; git show -s $i; echo; done
>>
>>>  - info about the last time it was merged into master
>>
>> for i in $(git branch -a | cut -b3-); do echo $i; git show -s $(git
>> merge-base $i master); echo; done
>>>
>>> What commands can I run to figure this out? I think I can figure out
>>> the first one - it's the second one I'm having trouble with.
>>>
>>> And if it would easier to do it from the C API (or something like the
>>> perl Git::PurePerl module) I'd be interested in knowing that, too.
>>>
>>> Thanks,
>>> ER
>>> --
>>> To unsubscribe from this list: send the line "unsubscribe git" in
>>> the body of a message to majordomo@vger.kernel.org
>>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>>>
>>
>
Jeff King· Apr 14, 2009, 05:46 UTC · re: Nathan W. Panike · lore

Re: help with git query

On Mon, Apr 13, 2009 at 03:31:49PM -0500, Nathan W. Panike wrote:
Show 6 quoted lines
> > for each branch:
> >  - info about the latest commit on that branch (date and time, message, etc.)
> 
> Depending on what you want to do---from a bash shell, you could do:
> 
> for i in $(git branch -a | cut -b3-); do echo $i; git show -s $i; echo; done

Ick, please use the plumbing designed for this exact thing instead of trying to parse "git branch":

  $ git for-each-ref --format='%(subject)
    %(authorname) %(authoremail)
    %(authordate)' refs/heads/

or however you want to format it. See "git help for-each-ref" for a list of fields (you can also just pipe the output of for-each-ref into a shell loop, as in your example, but with the format options there is often no need).

-Peff
Björn Steinbrink· Apr 14, 2009, 06:26 UTC · re: Jeff King · lore

Re: help with git query

On 2009.04.14 01:46:54 -0400, Jeff King wrote:
Show 20 quoted lines
> On Mon, Apr 13, 2009 at 03:31:49PM -0500, Nathan W. Panike wrote:
> 
> > > for each branch:
> > >  - info about the latest commit on that branch (date and time, message, etc.)
> > 
> > Depending on what you want to do---from a bash shell, you could do:
> > 
> > for i in $(git branch -a | cut -b3-); do echo $i; git show -s $i; echo; done
> 
> Ick, please use the plumbing designed for this exact thing instead of
> trying to parse "git branch":
> 
>   $ git for-each-ref --format='%(subject)
>     %(authorname) %(authoremail)
>     %(authordate)' refs/heads/
> 
> or however you want to format it. See "git help for-each-ref" for a list
> of fields (you can also just pipe the output of for-each-ref into a
> shell loop, as in your example, but with the format options there is
> often no need).
git log --no-walk --branches --decorate --pretty=short

is what I use, sometimes. Some other "pretty" format might be more suitable for your use case.

Björn

← back to recent threads