From: Kevin Bracey <kevin@bracey.fi>
To: John Keeping <john@keeping.me.uk>
Cc: git@vger.kernel.org, Junio C Hamano <gitster@pobox.com>,
Jeff King <peff@peff.net>, Jonathan Nieder <jrnieder@gmail.com>,
Michael J Gruber <git@drmicha.warpmail.net>
Subject: Re: [RFC/PATCH 0/2] merge-base: add --merge-child option
Date: Sun, 12 May 2013 20:14:06 +0300 [thread overview]
Message-ID: <518FCDDE.9040707@bracey.fi> (raw)
In-Reply-To: <20130512163317.GL2299@serenity.lan>
On 12/05/2013 19:33, John Keeping wrote:
> On Sun, May 12, 2013 at 05:28:24PM +0100, John Keeping wrote:
>> You're right (and I was wrong in my reply to Junio's parallel message)
>> ancestry path does seem to be what I want:
>>
>> $ git rev-list --ancestry-path --left-right --count \
>> master...git-gui/master
>> 2056 5
>>
>> However, this doesn't seem to make a difference to the time taken when I
>> add in --cherry-mark (which is why I was partially correct in the
>> parallel thread - it doesn't have the effect on cherry-mark that I want
>> it to):
>>
>> This seems to be caused by the code in revision.c::limit_list() which
>> does the cherry detection then limits to left/right and only then
>> applies the ancestry path. I haven't looked further than that, but is
>> there any reason not to apply the ancestry path restriction before
>> looking for patch-identical commits?
That certainly sounds like it's doing it the wrong way round. At first
sight, it seems obviously suboptimal.
> No I didn't. I forgot to update my $PATH when I built on master - those
> results are from pu. master says:
>
> fatal: --ancestry-path given but there are no bottom commits
Well, then it looks like we have a user for that particular syntax.
Seemed a bit esoteric to me :) Although I realised after sending my
mail you could also use
git log --ancestry-path --left-right E...F --not $(git merge-base
--all E F)
which looks like we're having to repeat ourselves because it's not
paying attention...
I hit it because one of my optimisations relies on knowing the bottom
commits, and I made absolutely sure I was using the exactly same
definition of "bottom" as --ancestry-path. And then I found that my
optimisations didn't work properly with "..."
I suggest we pull my patch out from the more complex optimisation series
so it can proceed to next faster. It shouldn't have to wait for all my
new fancy stuff - it's fixing something that appears to be a clear bug.
Although Junio did have a comment about the implementation - I'll
revisit it tomorrow and send a revised version separately, if everyone
thinks that's sensible.
>
>>> On this subject, is there any way to exclude a path from a log query? Is
>>> there a "not" operator for paths? Might be another way of doing this -
>>> disjoint histories probably have disjoint paths...
>> That relates to another idea I had about optimizing the detection of
>> patch-identical commits. If the smaller side of a symmetric difference
>> is quite small (as it is likely to be if it's a topic branch), would it
>> be a good idea to calculate the set of paths touched by commits on that
>> side and then skip calculating the patch ID for any commits that touch
>> paths outside that set. The tree comparison is a lot cheaper than doing
>> a diff on all of the files.
>>
Sounds cute. Go for it :)
Kevin
next prev parent reply other threads:[~2013-05-12 17:14 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-11 12:23 [RFC/PATCH 0/2] merge-base: add --merge-child option John Keeping
2013-05-11 12:23 ` [RFC/PATCH 1/2] commit: add commit_list_contains function John Keeping
2013-05-11 12:23 ` [RFC/PATCH 2/2] merge-base: add --merge-child option John Keeping
2013-05-11 17:54 ` [RFC/PATCH 0/2] " Junio C Hamano
2013-05-11 18:48 ` John Keeping
2013-05-12 15:44 ` Kevin Bracey
2013-05-12 16:28 ` John Keeping
2013-05-12 16:33 ` John Keeping
2013-05-12 17:14 ` Kevin Bracey [this message]
2013-05-12 22:22 ` Junio C Hamano
2013-05-13 14:26 ` Kevin Bracey
2013-05-13 14:45 ` Michael J Gruber
2013-05-19 12:40 ` log --cherry and merges (was [RFC/PATCH 0/2] merge-base: add --merge-child option) John Keeping
2013-05-20 6:43 ` Jonathan Nieder
2013-05-13 15:00 ` [PATCH 0/2] Make --ancestry-path A...B work Kevin Bracey
2013-05-13 15:00 ` [PATCH 1/2] t6019: demonstrate --ancestry-path A...B breakage Kevin Bracey
2013-05-13 15:00 ` [PATCH 2/2] revision.c: treat A...B merge bases as if manually specified Kevin Bracey
2013-05-13 16:04 ` Junio C Hamano
2013-05-12 16:58 ` [RFC/PATCH 0/2] merge-base: add --merge-child option John Keeping
2013-05-12 17:29 ` Kevin Bracey
2013-05-13 5:02 ` Junio C Hamano
2013-05-13 7:52 ` John Keeping
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=518FCDDE.9040707@bracey.fi \
--to=kevin@bracey.fi \
--cc=git@drmicha.warpmail.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=john@keeping.me.uk \
--cc=jrnieder@gmail.com \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.