From: John Keeping <john@keeping.me.uk>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org, 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: Sat, 11 May 2013 19:48:55 +0100 [thread overview]
Message-ID: <20130511184855.GE2299@serenity.lan> (raw)
In-Reply-To: <7vmws1xv0b.fsf@alter.siamese.dyndns.org>
On Sat, May 11, 2013 at 10:54:12AM -0700, Junio C Hamano wrote:
> John Keeping <john@keeping.me.uk> writes:
>
> > This is helpful when examining branches with disjoint roots, for example
> > because one is periodically merged into a subtree of the other.
> >
> > With the --merge-child option, "git merge-base" will print a
> > first-parent ancestor of the first revision given, where the commit
> > printed is either a merge-base of the supplied revisions or a merge for
> > which one of its parents (not the first) is a merge-base.
>
> The above two doe snot connect at least to me. The second paragraph
> seems to describe how this mysterious mode decides its output to a
> sufficient detail, but what the output _means_, and it is unclear
> how it relates to gitk/git-gui style merges.
>
> > For example, given the history:
> >
> > A---C---G
> > \
> > B-----D---F
> > \
> > E
> >
> > we have:
> > ...
> > $ git log --left-right F...E --not $(git merge-base --merge-child F E)
> > < F
> > > E
> >
> > The git-log case is useful because it allows us to limit the range of
> > commits that we are examining for patch-identical changes when using
> > --cherry.
>
> Hmph, is this reinventing ancestry-path in a different way? At the
> low level machinery, you are finding D to show only F and E, and
> your goal seems to be to ignore the side ancestry A--C--G, but it is
> not clear if you prefer "E D F"(which would be what F...E would give
> in a history limited to ancestry-path, ignoring C) over "E F".
I hadn't considered ancestry-path, but I don't think it does what I
want. What I want if for LEFT to be B--D--F and RIGHT to be B--E,
ignoring A--C--G because I know that none of those are patch identical
to anything in B--E.
So what I want is more descendant-path than ancestry path in that I
don't want anything that isn't a descendant of the merge base of the
supplied arguments.
> > For example with git-gui in git.git I know that anything
> > before the last merge of git-gui is not interesting:
>
> Can this be extended to find the second last such merge? Or is the
> last one always special?
In this implementation it only finds the last one because that's where
the merge base is.
> Still skeptical, but I'll let people discuss it during the feature
> freeze ;-).
I'm not convinced this is easy to explain myself, which may make it a
bad idea. Perhaps a --descendant-path argument to git-log is a better
way to help with this case.
next prev parent reply other threads:[~2013-05-11 18:49 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 [this message]
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
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=20130511184855.GE2299@serenity.lan \
--to=john@keeping.me.uk \
--cc=git@drmicha.warpmail.net \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--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.