git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Cc: Christian Couder <chriscool@tuxfamily.org>,
	Michael Haggerty <mhagger@alum.mit.edu>,
	Jeff King <peff@peff.net>,
	git@vger.kernel.org
Subject: Re: [PATCH] bisect: test merge base if good rev is not an ancestor of bad rev
Date: Thu, 10 Jul 2008 16:24:22 -0700	[thread overview]
Message-ID: <7v7ibtnx09.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <alpine.DEB.1.00.0807110035180.3279@eeepc-johanness> (Johannes Schindelin's message of "Fri, 11 Jul 2008 00:38:10 +0200 (CEST)")

Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:

> You are opening a can of worms here, and I doubt that this is a good idea.
>
> git-bisect as-is has very precise, and _simple_ semantics, and users 
> should really know what they are doing (i.e. not marking something as 
> "good" which is on a branch containing a fix).
>
> Trying to be too clever here might just make the whole tool rather 
> useless.

Have you read the original thread yet?  I do not think this is trying to
be clever at all, but trying to be helpful.

As you explained, bisection *requires* that Good is ancestor of Bad.

     ---o---?---?---?---x
        Good            Bad

But in real life, things are more like "Today's master does not work, but
I am sure it used to work at 1.5.6.2".  I happen to always merge all of
'maint' to 'master' before pushing them out, so a good topology is
guaranteed, but not everybody does this (it takes careful planning what to
apply to 'maint' and where to fork topics from, and maintainers are not
perfect):

              Good
          ?---o (maint)
         /
     ---?---?---?---?---x (master)
        MB              Bad

People _will_ face such a topology.  If the users Know Better, they will
test MB=$(merge-base master maint) first to see if it is broken, and then
the world will have two possibilities:

    (1)       Good
          ?---o (maint)
         /
     ---o---?---?---?---x (master)
        Good            Bad

    (2)       Good
          ?---o (maint)
         /
     ---x---?---?---?---x (master)
        Bad             Bad


If (1), you go ahead with the usual bisection.  If (2), you cannot even
bisect.  Instead, you flip good and bad to find the "fix" in the side
branch (the answer has to be either the tip of maint or one previous in
the picture) to forward port to, either by merging 'maint' to 'master' or
cherry-picking.

The idea to check merge-base first is about automating this process (I
admit I still haven't looked at Christian's patch text yet).

  parent reply	other threads:[~2008-07-10 23:26 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-07-10  3:41 [PATCH] bisect: test merge base if good rev is not an ancestor of bad rev Christian Couder
2008-07-10 10:04 ` Johannes Schindelin
2008-07-10 19:26   ` Christian Couder
2008-07-10 20:02     ` Junio C Hamano
2008-07-10 20:13       ` Junio C Hamano
2008-07-10 22:36       ` Christian Couder
2008-07-10 22:38         ` Johannes Schindelin
2008-07-10 23:21           ` Christian Couder
2008-07-10 23:24           ` Junio C Hamano [this message]
2008-07-10 23:45             ` Christian Couder
2008-07-10 23:50               ` Junio C Hamano
2008-07-10 23:59             ` Johannes Schindelin
2008-07-11  6:51               ` Junio C Hamano
2008-07-11 11:21                 ` Johannes Schindelin
2008-07-10 23:10         ` Junio C Hamano
2008-07-13  6:37         ` Christian Couder
2008-07-13 13:14           ` Johannes Schindelin
2008-07-22  6:15             ` Christian Couder

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=7v7ibtnx09.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=chriscool@tuxfamily.org \
    --cc=git@vger.kernel.org \
    --cc=mhagger@alum.mit.edu \
    --cc=peff@peff.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.
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).