git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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

  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).