Re: [PATCH v2 3/3] Add option to transpose parents of merge commit

2012-11-28 Thread Junio C Hamano
Johannes Sixt  writes:

> Am 11/28/2012 0:00, schrieb Kacper Kornet:
>> When the changes are pushed upstream, and in the meantime someone else
>> updated upstream branch git advises to use git pull. This results in
>> history:
>> 
>>  ---A---B---C--
>>  \ /
>>   D---E
>
> The commit message will say:
>
>   Merge branch 'master' of /that/remote
>
>   * 'master' of /that/remote:
> E
> D
>
>> where B is the local commit. D, E are commits pushed by someone else
>> when the developer was working on B. However sometimes the following
>> history is preferable:
>> 
>> ---A---D---C'--
>> \ /
>>  '-B-'
>
> Better:
>
>  ---A--D--E--C'
>  \  /
>   `B

Yup, that topology is what Kacper's workflow wants.

Stepping back a bit, however, I am not sure if that is really true.
The goal of this topic seems to be to keep one integration branch
and always merge *into* that integration branch, never *from* it,
but for what purpose?  Making the "log --first-parent" express the
integration branch as a linear series of progress?  If so, I suspect
a project with such a policy would dictate that D and E also be on a
side branch, i.e. the history would look more like this:

  D---E
 / \
  --A---X---C---
 \ /
  `---B

with X being a --no-ff merge of the topic that consists of these two
commits.

> In this case, the commit message should say... what? Certainly not the
> same thing. But I do not see that you changed anything in this regard.

True.  If the goal is to emulate a merge of B from a side branch
into _the_ integration branch, the summary should also emulate the
message that would be given when the remote pulled from your current
branch.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 3/3] Add option to transpose parents of merge commit

2012-11-27 Thread Johannes Sixt
Am 11/28/2012 0:00, schrieb Kacper Kornet:
> When the changes are pushed upstream, and in the meantime someone else
> updated upstream branch git advises to use git pull. This results in
> history:
> 
>  ---A---B---C--
>  \ /
>   D---E

The commit message will say:

  Merge branch 'master' of /that/remote

  * 'master' of /that/remote:
E
D

> where B is the local commit. D, E are commits pushed by someone else
> when the developer was working on B. However sometimes the following
> history is preferable:
> 
> ---A---D---C'--
> \ /
>  '-B-'

Better:

 ---A--D--E--C'
 \  /
  `B

In this case, the commit message should say... what? Certainly not the
same thing. But I do not see that you changed anything in this regard.

-- Hannes
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 3/3] Add option to transpose parents of merge commit

2012-11-27 Thread Kacper Kornet
On Tue, Nov 27, 2012 at 06:18:00PM -0800, Junio C Hamano wrote:
> Kacper Kornet  writes:

> > +--transpose-parents::
> > +   Transpose the parents in the final commit. The change is made
> > +   just before the commit so the meaning of 'our' and 'their'
> > +   concepts remains the same (i.e. 'our' means current branch before
> > +   the merge).
> > +

> How does this interact with Octopus merges?

It moves the original first parent to the last position. And nothing
more. I have forgotten to mention it in the documentation.

> > diff --git a/builtin/commit.c b/builtin/commit.c
> > index ee0e884..ab2b844 100644
> > --- a/builtin/commit.c
> > +++ b/builtin/commit.c
> > @@ -1477,6 +1477,7 @@ int cmd_commit(int argc, const char **argv, const 
> > char *prefix)
> > } else if (whence == FROM_MERGE) {
> > struct strbuf m = STRBUF_INIT;
> > FILE *fp;
> > +   int reversed_order=0;

> Style. s/=/ = /;

> > +   OPT_BOOLEAN(0, "transpose-parents", &reversed_order, N_("reverse order 
> > of parents")

> It smells more like "--reverse-parents" (if you deal only with
> two-head merges), no?

I have changes to --transpose-parents because of the octopus merges.
Although it is not a mathematical transposition in this case, but a cycle
permutation. 

-- 
  Kacper
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH v2 3/3] Add option to transpose parents of merge commit

2012-11-27 Thread Junio C Hamano
Kacper Kornet  writes:

> +--transpose-parents::
> + Transpose the parents in the final commit. The change is made
> + just before the commit so the meaning of 'our' and 'their'
> + concepts remains the same (i.e. 'our' means current branch before
> + the merge).
> +

How does this interact with Octopus merges?

> diff --git a/builtin/commit.c b/builtin/commit.c
> index ee0e884..ab2b844 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -1477,6 +1477,7 @@ int cmd_commit(int argc, const char **argv, const char 
> *prefix)
>   } else if (whence == FROM_MERGE) {
>   struct strbuf m = STRBUF_INIT;
>   FILE *fp;
> + int reversed_order=0;

Style. s/=/ = /;

> + OPT_BOOLEAN(0, "transpose-parents", &reversed_order, N_("reverse order 
> of parents")

It smells more like "--reverse-parents" (if you deal only with
two-head merges), no?
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html