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