git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* Getting a list of commits between 2 points without upstream changes
@ 2011-07-17 23:49 Chris Packham
  2011-07-18  0:17 ` Jeff King
  0 siblings, 1 reply; 4+ messages in thread
From: Chris Packham @ 2011-07-17 23:49 UTC (permalink / raw
  To: GIT

Hi List,

I'm trying to send round an incremental changelog for my project which
contains just my changes without changes that have been made upstream.
The history look something like this.

---o--o--o--o--o--o--o--o-- upstream
    \          \        \
     \-m--A--m--B--m--C--D-- topic

What I want is a changelog with just B, C and D in it (i.e. no merge
commits and no commits already in upstream). I know if I wanted A,B,C
and D I could just do 'git log --no-merges upstream..topic'. If I do
'git log --no-merges B..topic' I get the merged commits from upstream.
In set-speak what I think want is the union of upstream..topic and
B..topic.

Is there any existing way to achieve this? I'm happy to hack something
up using git rev-list if necessary.

Thanks,
Chris

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Getting a list of commits between 2 points without upstream changes
  2011-07-17 23:49 Getting a list of commits between 2 points without upstream changes Chris Packham
@ 2011-07-18  0:17 ` Jeff King
  2011-07-18  0:33   ` Chris Packham
  0 siblings, 1 reply; 4+ messages in thread
From: Jeff King @ 2011-07-18  0:17 UTC (permalink / raw
  To: Chris Packham; +Cc: GIT

On Mon, Jul 18, 2011 at 11:49:57AM +1200, Chris Packham wrote:

> I'm trying to send round an incremental changelog for my project which
> contains just my changes without changes that have been made upstream.
> The history look something like this.
> 
> ---o--o--o--o--o--o--o--o-- upstream
>     \          \        \
>      \-m--A--m--B--m--C--D-- topic
> 
> What I want is a changelog with just B, C and D in it (i.e. no merge
> commits and no commits already in upstream). I know if I wanted A,B,C
> and D I could just do 'git log --no-merges upstream..topic'. If I do
> 'git log --no-merges B..topic' I get the merged commits from upstream.
> In set-speak what I think want is the union of upstream..topic and
> B..topic.

I'm not clear on what makes "B" more special than "A" in the graph
above. But assuming you know A, don't you just want:

  git log --no-merges topic ^upstream ^A

? That is, "everything in topic, but not in upstream, nor in the parent
of A". Or if you know A and not B, you can use "^B^!" (which means "do
not include commits that are in any parent of B").

-Peff

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Getting a list of commits between 2 points without upstream changes
  2011-07-18  0:17 ` Jeff King
@ 2011-07-18  0:33   ` Chris Packham
  2011-07-18  1:28     ` Jeff King
  0 siblings, 1 reply; 4+ messages in thread
From: Chris Packham @ 2011-07-18  0:33 UTC (permalink / raw
  To: Jeff King; +Cc: GIT

On Mon, Jul 18, 2011 at 12:17 PM, Jeff King <peff@peff.net> wrote:
> On Mon, Jul 18, 2011 at 11:49:57AM +1200, Chris Packham wrote:
>
>> I'm trying to send round an incremental changelog for my project which
>> contains just my changes without changes that have been made upstream.
>> The history look something like this.
>>
>> ---o--o--o--o--o--o--o--o-- upstream
>>     \          \        \
>>      \-m--A--m--B--m--C--D-- topic
>>
>> What I want is a changelog with just B, C and D in it (i.e. no merge
>> commits and no commits already in upstream). I know if I wanted A,B,C
>> and D I could just do 'git log --no-merges upstream..topic'. If I do
>> 'git log --no-merges B..topic' I get the merged commits from upstream.
>> In set-speak what I think want is the union of upstream..topic and
>> B..topic.
>
> I'm not clear on what makes "B" more special than "A" in the graph
> above. But assuming you know A, don't you just want:

What makes A special in this case is that commits up to and including
A have been reviewed, regression tested etc. My use-case is really
about telling people what has been worked on since the last time the
code was reviewed.

>
>  git log --no-merges topic ^upstream ^A
>
> ? That is, "everything in topic, but not in upstream, nor in the parent
> of A". Or if you know A and not B, you can use "^B^!" (which means "do
> not include commits that are in any parent of B").

Brilliant, that's exactly what I wanted. Thanks.

>
> -Peff
>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: Getting a list of commits between 2 points without upstream changes
  2011-07-18  0:33   ` Chris Packham
@ 2011-07-18  1:28     ` Jeff King
  0 siblings, 0 replies; 4+ messages in thread
From: Jeff King @ 2011-07-18  1:28 UTC (permalink / raw
  To: Chris Packham; +Cc: GIT

On Mon, Jul 18, 2011 at 12:33:27PM +1200, Chris Packham wrote:

> > I'm not clear on what makes "B" more special than "A" in the graph
> > above. But assuming you know A, don't you just want:
> 
> What makes A special in this case is that commits up to and including
> A have been reviewed, regression tested etc. My use-case is really
> about telling people what has been worked on since the last time the
> code was reviewed.

OK, that makes sense.

> >  git log --no-merges topic ^upstream ^A
> >
> > ? That is, "everything in topic, but not in upstream, nor in the parent
> > of A". Or if you know A and not B, you can use "^B^!" (which means "do
> > not include commits that are in any parent of B").
> 
> Brilliant, that's exactly what I wanted. Thanks.

Oops, I mis-stated it above. It would be "everything in topic, but not
in upstream, nor in A". Which I think is what you actually want (I had
originally written it as "^B^!", but forgot to change the text when I
switched it to the more-readable "^A").

-Peff

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2011-07-18  1:28 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-17 23:49 Getting a list of commits between 2 points without upstream changes Chris Packham
2011-07-18  0:17 ` Jeff King
2011-07-18  0:33   ` Chris Packham
2011-07-18  1:28     ` Jeff King

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).