From: Jakub Narebski <jnareb@gmail.com>
To: "Sverre Hvammen Johansen" <hvammen@gmail.com>
Cc: "Junio C Hamano" <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: [PATCH 4/5] Head reduction before selecting merge strategy
Date: Fri, 25 Apr 2008 03:31:14 -0700 (PDT) [thread overview]
Message-ID: <m3prsep6oy.fsf@localhost.localdomain> (raw)
In-Reply-To: <402c10cd0804232252g43606767r10344ebbb2a44af9@mail.gmail.com>
"Sverre Hvammen Johansen" <hvammen@gmail.com> writes:
> See the documentation for an explanation of this feature.
I think I get the idea now.
You want to generalize fast-forward merge, or what's equivalent make
fast-formard merge to be special case of head reduction. This should
be written both in commit message and in documentation. Do I
understand your goal correctly?
With head reduction comes three things:
* the merge strategy used
* recorded parents
* generated merge commit message
The simplest way would be to use reduced head for all three things,
I think.
But I also think that this commit in series is the most controversial
one; is it realy needed for other commits? I would put it then as the
last commit in series...
> +If more than one commit are specified on the command line, git will
> +try to reduce the number of commits used (reduced parents) by
> +eliminating commits than can be reached from other commits. The
> +commit message will reflect the commits specified on the command line
> +but the merge strategy will be selected based on the reduced parents
> +including `HEAD`. The reduced parents are the parents recorded in the
> +merge commit object.
Is it a correct solution, to use provided (specified) heads for
generation of merge commit message, but use reduced heads for
selecting merge strategy _and_ also as parents recorded in merge
commits? Perhaps it is; but IMHO you should have written it in the
commit message, and defend this decision in commit message.
> +
> +The following shows master and three topic branches. topicB is based
> +on topicA, topicA is previously branched off from master, and topicC
> +is based on the tip of the master branch:
> +
> +------------
> + o---o---o topicB
> + /
> + o---o---o topicA
> + /
> + o---o---o---o---o---o master
> + \
> + o---o topicC
> +------------
I think I would start with simpler example without 'topicC', of
reduction of octopus to two-parent ordinary merge.
> diff --git a/git-merge.sh b/git-merge.sh
> index 7c34b6c..7c70c56 100755
> --- a/git-merge.sh
> +++ b/git-merge.sh
> @@ -337,11 +337,16 @@ set x $remoteheads ; shift
>
> find_reduced_parents "$@"
>
> -actual_parents=$(git rev-parse "$@")
This was introduced by some of your earlier commits, isn't it?
[...]
--
Jakub Narebski
Poland
ShadeHawk on #git
next prev parent reply other threads:[~2008-04-25 10:32 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-24 5:52 [PATCH 4/5] Head reduction before selecting merge strategy Sverre Hvammen Johansen
2008-04-25 10:31 ` Jakub Narebski [this message]
2008-05-04 4:52 ` Sverre Hvammen Johansen
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=m3prsep6oy.fsf@localhost.localdomain \
--to=jnareb@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=hvammen@gmail.com \
/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 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 NNTP newsgroup(s).