git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Steffen Prohaska <prohaska@zib.de>
Cc: git@vger.kernel.org, Benoit Sigoure <tsuna@lrde.epita.fr>,
	Andreas Ericsson <ae@op5.se>,
	Johannes Sixt <j.sixt@viscovery.net>
Subject: Re: [PATCH v3] user-manual: add advanced topic "bisecting merges"
Date: Sat, 10 Nov 2007 02:36:15 -0800	[thread overview]
Message-ID: <7vsl3emlpc.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <119468808499-git-send-email-prohaska@zib.de> (Steffen Prohaska's message of "Sat, 10 Nov 2007 10:48:04 +0100")

Steffen Prohaska <prohaska@zib.de> writes:

> ...
> +A solution is to linearize the history by rebasing the lower
> +branch on top of the upper, instead of merging. There were no

Hmm.  When I wrote it, I did not mean this as a "solution", but
as an illustration of how a merge heavy history and a linear
history have impact on bisectability.  So it is more like...

    On the other hand, if you did not merge at C but rebased the
    history between Z to B on top of A, you would have get this
    linear history [illustration here].  Bisecting between Z and
    D* would hit a single culprit commit Y* instead.  This tends
    to be easier to understand why it is broken.

For this reason, many experienced git users, even when they are
working on an otherwise merge-heavy project, keep the histories
linear by rebasing their work on top of public upstreams before
publishing (when able).  An extreme example: merges from a few
top-level lieutenants to Linus in the kernel, e.g. David Miller,
are known to _almost always_ fast-forward for Linus.

IOW, the description is to mildly encourage private rebasing to
keep the job of later bisecting (for potentially others) easier.
I realize I originally wrote as if C (merge) was made by the
same person as the person who ends up bisecting, but that is
not necessarily the case.  Keeping the history without needless
merges tend to make _other_ people's lives simpler.

And after encouraging the private rebasing, I would continue
like...

    But if you already made a merge C instead of rebasing, all
    is not lost.  In the illustrated case, you can easily rebase
    one parent branch on top of the other after the fact, just
    to understand the history and to make the history more
    easily bisectable.  Even though the published history should
    not be rewound without consent with others in the project,
    nobody gets hurt if you rebased to create alternate history
    privately.  After understanding the breakage and coming up
    with a fix on top of D*, you can discard that rebased
    history, and apply the same fix on top of D, as D* and D
    should have the identical trees.

  reply	other threads:[~2007-11-10 10:36 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-04  9:16 [PATCH] user-manual: add advanced topic "bisecting merges" Steffen Prohaska
2007-11-04 11:23 ` Ralf Wildenhues
2007-11-07 21:50   ` [PATCH v2] " Steffen Prohaska
2007-11-07 22:16     ` Benoit Sigoure
2007-11-07 22:26       ` J. Bruce Fields
2007-11-08  6:40       ` Steffen Prohaska
2007-11-08  7:19     ` Johannes Sixt
2007-11-08  8:59       ` Steffen Prohaska
2007-11-08  9:11         ` Johannes Sixt
2007-11-08  9:33           ` Andreas Ericsson
2007-11-08  9:53             ` Johannes Sixt
2007-11-08 12:54               ` Steffen Prohaska
2007-11-08 13:22                 ` Johannes Sixt
2007-11-08 14:55                   ` Steffen Prohaska
2007-11-10  9:48                     ` [PATCH v3] " Steffen Prohaska
2007-11-10 10:36                       ` Junio C Hamano [this message]
2007-11-10 11:16                         ` Steffen Prohaska
2007-11-10 13:49                           ` [PATCH v4] user-manual: Add section "Why bisecting merge commits can be harder ..." Steffen Prohaska
2007-11-10 19:10                             ` Linus Torvalds
2007-11-10 20:25                               ` Junio C Hamano
2007-11-10 22:41                                 ` Steffen Prohaska
2007-11-18  3:59                             ` J. Bruce Fields
2007-11-18  9:47                               ` Steffen Prohaska
2007-11-18 23:18                                 ` J. Bruce Fields
2007-11-08 13:38                 ` [PATCH v2] user-manual: add advanced topic "bisecting merges" Andreas Ericsson
2007-11-08 14:51                 ` Benoit Sigoure
2007-11-08 15:07                   ` Steffen Prohaska
2007-11-08 15:23                   ` Johannes Schindelin
2007-11-08 18:38                   ` Brian Gernhardt
2007-11-04 13:50 ` [PATCH] " Benoit SIGOURE

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=7vsl3emlpc.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=ae@op5.se \
    --cc=git@vger.kernel.org \
    --cc=j.sixt@viscovery.net \
    --cc=prohaska@zib.de \
    --cc=tsuna@lrde.epita.fr \
    /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).