git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Andreas Krey <a.krey@gmx.de>
Cc: John Keeping <john@keeping.me.uk>,
	John Szakmeister <john@szakmeister.net>,
	git@vger.kernel.org
Subject: Re: first parent, commit graph layout, and pull merge direction
Date: Fri, 24 May 2013 12:23:56 -0700	[thread overview]
Message-ID: <7vmwrk89mb.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <20130524171110.GB9448@inner.h.apk.li> (Andreas Krey's message of "Fri, 24 May 2013 19:11:10 +0200")

Andreas Krey <a.krey@gmx.de> writes:

> On Thu, 23 May 2013 09:01:15 +0000, Junio C Hamano wrote:
> ...
>> Instead of having a nice "these six commits marked as 'x' were done
>> on a branch forked some time ago, to address only this one issue and
>> to address it fully" history that explains how these commits were
>> related and these commits are the full solution to a single issue:
>> 
>>       x---x---x---x---x---x
>>      /                     \
>>  ---o---o---o---o---o---o---M---o---o---...
>> 
>> they end up with something like this, even with the "flip the heads
>> of a merge" option, by pulling too often:
>> 
>>       x---x   x---x---x   x
>>      /     \ /         \ / \
>>  ---o---o---M---o---o---M---M---o---o---...
>
> Wouldn't that be (you don't want to put your work back into master before
> it's done) the following?
>
>        x---x---M---x---x---M--x
>       /       /           /    \
>   ---o---o---M---o---o---M--o---M---o---o---...

That is what you would get if you "pull from my upstream" with the
current software.

And that is what triggered this discussion thread in which some
people said that they do not want that shape of the history.

At the leftmost merge M you drew on the upper line (i.e. your
topic), the merge pulls in other's commits that are unrelated to
each other as if it were a meaningful group of commits on a side
branch.  They want to see the merge going other way around, pulling
your work done on a side branch, integrating into the mainline.

The second illustration you are commenting on were done to explain
why such a "when pulling from my upstream, I want the order of
parents swapped, so that mainline appears as the first parent" is
not solving the whole issue.  The time series would go more like
this:

(1) While you were working on two 'x's, others have worked to
    advance the mainline:

       x---x  Your 'master'
      /
  ---o---o  Mainline


(2) You cannot push without losing others work, so you pull, but in
    order to avoid the "others work on mixed on a single side
    branch" issue, you use the fictional "flip heads of a merge"
    option, and push the result out.  That becomes the tip of the
    mainline:

       x---x
      /     \
  ---o---o---M

(3) Then you keep working to build more commits on top. 

       x---x   x---x---x
      /     \ /
  ---o---o---M

(4) And others also keep working.

       x---x   x---x---x
      /     \ /
  ---o---o---M---o---o

  reply	other threads:[~2013-05-24 19:24 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-22 11:50 first parent, commit graph layout, and pull merge direction Andreas Krey
2013-05-22 18:07 ` Junio C Hamano
2013-05-23  9:06   ` Andreas Krey
2013-05-23  9:48     ` John Szakmeister
2013-05-23 10:07       ` Jeremy Rosen
2013-05-23 10:29       ` Andreas Krey
2013-05-23 11:08         ` John Keeping
2013-05-23 16:01           ` Junio C Hamano
2013-05-23 16:41             ` John Keeping
2013-05-23 21:01               ` Junio C Hamano
2013-05-23 21:55                 ` John Keeping
2013-05-23 21:59                   ` Felipe Contreras
2013-05-23 22:11                   ` Junio C Hamano
2013-05-23 22:46                     ` Felipe Contreras
2013-05-23 22:54                       ` Junio C Hamano
2013-05-23 23:09                         ` Felipe Contreras
2013-05-23 23:26                           ` Junio C Hamano
2013-05-23 23:53                             ` Felipe Contreras
2013-05-24  8:29                               ` John Keeping
2013-05-24  9:38                                 ` John Szakmeister
2013-05-24  0:03                     ` Linus Torvalds
2013-05-24  0:21                       ` Junio C Hamano
2013-05-24  0:24                         ` Linus Torvalds
2013-05-24  0:25                         ` Felipe Contreras
2013-05-24  0:32                           ` Felipe Contreras
2013-05-24 16:26                             ` Junio C Hamano
2013-05-24 20:47                               ` Philip Oakley
2013-06-27 19:48                       ` [PATCH] pull: require choice between rebase/merge on non-fast-forward pull Junio C Hamano
2013-06-27 20:10                         ` W. Trevor King
2013-06-27 21:20                           ` Junio C Hamano
2013-06-28  1:08                             ` W. Trevor King
2013-06-28  6:34                           ` Matthieu Moy
2013-06-28  9:09                             ` W. Trevor King
2013-06-28 11:52                               ` Matthieu Moy
2013-06-28 12:28                                 ` W. Trevor King
2013-06-27 20:11                         ` Fredrik Gustafsson
2013-06-27 20:49                           ` Junio C Hamano
2013-06-27 20:30                         ` W. Trevor King
2013-06-27 20:58                           ` Junio C Hamano
2013-06-27 22:16                         ` Matthieu Moy
2013-06-28  1:19                           ` W. Trevor King
2013-06-28  8:09                         ` John Keeping
2013-06-28 17:22                           ` Junio C Hamano
2013-06-28 17:42                             ` John Keeping
2013-06-28 22:41                               ` Junio C Hamano
2013-07-02 21:18                                 ` John Keeping
2013-07-14 15:03                                 ` [PATCH] fixup! " John Keeping
2013-07-15  4:23                                   ` Junio C Hamano
2013-08-28 23:22                                 ` [PATCH] " Felipe Contreras
2013-07-18 14:30                         ` John Keeping
2013-07-18 17:38                           ` Andreas Schwab
2013-07-18 18:00                             ` Junio C Hamano
2013-07-18 19:35                               ` [PATCH v2] " Junio C Hamano
2013-07-19  0:54                                 ` Eric Sunshine
2013-07-19 16:22                                   ` Junio C Hamano
2013-07-19 20:29                                     ` Eric Sunshine
2013-07-19 22:20                                       ` Junio C Hamano
2013-07-19 22:30                                         ` Eric Sunshine
2013-07-19 22:55                                           ` Junio C Hamano
2014-01-22 19:08                                 ` Flimm
2013-05-24 17:11             ` first parent, commit graph layout, and pull merge direction Andreas Krey
2013-05-24 19:23               ` Junio C Hamano [this message]
2013-05-23 19:25     ` Andreas Krey
2013-05-24  9:29       ` Holger Hellmuth (IKS)
2013-05-24 13:42         ` Andreas Krey
2013-05-24 15:05           ` Holger Hellmuth (IKS)
2013-05-24 17:24             ` Andreas Krey
2013-05-23 11:34 ` Felipe Contreras
2013-05-23 12:21   ` Andreas Krey

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7vmwrk89mb.fsf@alter.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=a.krey@gmx.de \
    --cc=git@vger.kernel.org \
    --cc=john@keeping.me.uk \
    --cc=john@szakmeister.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).