git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Jacopo Notarstefano <jacopo.notarstefano@gmail.com>
To: Junio C Hamano <gitster@pobox.com>
Cc: Michael Haggerty <mhagger@alum.mit.edu>,
	Git Mailing List <git@vger.kernel.org>,
	Christian Couder <christian.couder@gmail.com>
Subject: Re: An idea for "git bisect" and a GSoC enquiry
Date: Sat, 1 Mar 2014 12:31:58 +0100	[thread overview]
Message-ID: <CAL0uuq3eWnLz3=wiexSsJgArUYx95EjLMDWyDvQb9=_ieQUvBA@mail.gmail.com> (raw)
In-Reply-To: <xmqqtxbjum06.fsf@gitster.dls.corp.google.com>

> I am not sure I understand what you are trying to say.  Are you
> saying that we should stick to good/bad and allow the users use
> nothing else, because allowing "fixed" will be confusing?
>

No! Pretty much the opposite of that. My idea (the "mark" subcommand)
is to let people define their own pairs of labels to represent two
opposite states of a commit. My point was that, if people choose pairs
of words that are not opposites (such as "good" and "fixed") then it's
their error, not something that git should attempt to fix or detect.

> For a young tool or a feature, catering to perfect human perfectly
> is a good first goal---if it does not work well even for error-free
> human input, it would be worthless.  However, its second goal after
> achieving that first goal ought to be to help imperfect humans.
>

Loved this.

> Why do you think there is nothing it can do to help the user?  Upon
> seeing "bad", the tool should at least be able to say "Excuse me,
> but you earlier said 'fixed' for one of the commits, so your
> vocabulary now is limited to 'fixed' and 'broken'".  I think it also
> should be able to add "Did you mean to say 'broken'?", or even "I'd
> assume that you meant 'broken' and will continue."
>

I haven't said this, but this is pretty much what I had in mind.
Suppose a user wants to find a bugfix between HEAD and HEAD~10, this
is what she would do:

$ git bisect start
$ git bisect mark working HEAD
$ git bisect mark broken HEAD~10

[git will now start bisecting as usual. Suppose that she is now at HEAD~5]

$ git bisect mark bad
-> Error: unrecognized label 'bad'. You previously used 'working' and
'fixed' to describe commits in this git bisect session. Please mark
commits with one of these labels.

I suppose that we could cater a little better to imperfect humans if
we had two predefined parallel list of antonyms in which to search for
given labels and infer whether they are positive or negative labels,
but this is beyond the scope of my proposal.

> I have always wondered if we can introduce a value neutral synonyms
> to good and bad.  For a bisect session, we care only about two
> states: "still-X" and "no-longer-X" where X may be 'working' for the
> normal bug-hunting bisection and 'broken' for the fix-hunting one.
>
>         $ git bisect still-working v1.6.0
>         $ git bisect no-longer-working v1.8.0
>
> would be a way to find a bug that was introduced during v1.6.0..v1.8.0,
> while
>
>         $ git bisect still-broken v1.6.0
>         $ git bisect no-longer-broken v1.8.0
>
> would be a way to find a fix in the same range.  The lowest-level
> bisection machinery could just _ignore_ anything after still/no-longer
> and do its thing, [...]

This is remarkably similar to my proposal. Using "mark", these would be:

$ git bisect mark working v1.6.0
$ git bisect mark not-working v1.8.0

and

$ git bisect mark broken v1.6.0
$ git bisect mark not-broken v1.8.0

> while the end-user facing layer could enforce,
> once one commit is marked as still-X (or no-longer-X), that nothing
> other than the same X is used, and issue an error message, perhaps
> like this:
>
>         $ git bisect still-broken v1.6.0
>         $ git bisect still-working v1.8.0
>         error: You earlier marked v1.6.0 as "still-broken" and
>         error: are hunting for the first commit that can be marked
>         error: as "no-longer-broken".  Say either "still-broken" or
>         error: "no-longer-broken", not "still-working".
>
> and that can be done without having to understand that "broken" is
> the opposite of "working" (of course if we understood that, we could
> even offer to guess that the user meant "no-longer-broken" by
> "still-working", but we do not want to go there).

Here my proposal differs in that I have no way of knowing which label
is good and which label is bad: I blindly accept two distinct labels
and bisect with those. I gave an example of this behaviour above.

  reply	other threads:[~2014-03-01 11:32 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-02-26  8:28 An idea for "git bisect" and a GSoC enquiry Jacopo Notarstefano
2014-02-26 19:58 ` Junio C Hamano
2014-02-28  9:00   ` Jacopo Notarstefano
2014-02-27 11:18 ` Michael Haggerty
2014-02-27 12:09   ` Matthieu Moy
2014-02-28  9:03   ` Jacopo Notarstefano
2014-02-28 18:31     ` Junio C Hamano
2014-03-01 11:31       ` Jacopo Notarstefano [this message]
2014-03-03 18:34         ` Junio C Hamano
2014-03-12  1:32           ` Jacopo Notarstefano
2014-03-12 18:31             ` Junio C Hamano
2014-03-13 17:19               ` Michael Haggerty
2014-03-13 18:47                 ` Junio C Hamano
     [not found]   ` <CAL0uuq3TGb2wjaqNxwXYa++E5rjVoozox5mZbzTaE17OKtsVTg@mail.gmail.com>
     [not found]     ` <a8cf74b4-bae1-4511-a45e-d4ca90e3c3e1@email.android.com>
2014-02-28  9:07       ` Jacopo Notarstefano
2014-02-28  9:13       ` Jacopo Notarstefano
2014-02-27 14:47 ` Christian Couder
2014-02-27 22:46   ` Andrew Ardill

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='CAL0uuq3eWnLz3=wiexSsJgArUYx95EjLMDWyDvQb9=_ieQUvBA@mail.gmail.com' \
    --to=jacopo.notarstefano@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=mhagger@alum.mit.edu \
    /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).