Re: [PATCH] Add command `git bisect state` that checks if the current bisection process has reached the first bad commit.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 16 Aug 2013 00:17:27 -0400
Eric Sunshine <sunshine@xxxxxxxxxxxxxx> wrote:

> On Thu, Aug 15, 2013 at 6:35 PM, Mattias Andrée
> <maandree@xxxxxxxxxxxxx> wrote:
> > This can be used for automated bisection without a
> > check script.
> >
> > Signed-off-by: Mattias Andrée <maandree@xxxxxxxxxxxxx>
> > ---
> >  Documentation/git-bisect.txt | 13 +++++++++++++
> >  git-bisect.sh                | 11 ++++++++++-
> >  2 files changed, 23 insertions(+), 1 deletion(-)
> >
> > diff --git a/Documentation/git-bisect.txt
> > b/Documentation/git-bisect.txt index f986c5c..ca8c09d
> > 100644 --- a/Documentation/git-bisect.txt
> > +++ b/Documentation/git-bisect.txt
> > @@ -25,6 +25,7 @@ on the subcommand:
> >   git bisect visualize
> >   git bisect replay <logfile>
> >   git bisect log
> > + git bisect state
> >   git bisect run <cmd>...
> >
> >  This command uses 'git rev-list --bisect' to help
> > drive the @@ -104,6 +105,18 @@ For example, `git bisect
> > reset HEAD` will leave you on the current bisection
> > commit and avoid switching commits at all, while `git
> > bisect reset bisect/bad` will check out the first bad
> > revision.
> >
> > +Bisect state
> > +~~~~~~~~~~~~~~~~
> > +
> > +To see the bisection process has finnished, issue the
> > following command:
> 
> s/see the/see if the/
> s/finnished/finished/

Oh, I should have proofread the text. However,
the command name ‘state’ may not be the best,
but I could not think of anything better, so
I am open for comments on a better name.



The purpose of this patch is to provide an
issue what to do an automated `git bisect`
without having to write an script file.

This patch allows you to an automated by section
by just like if it was a manual, i.e. stating
with `git bisect start && git bisect bad &&
git bisect good <commit>` but then type:

while ! git bisect state; do
<test command> && git bisect good || git bisect bad
done

I think this is useful to lower the barrier
of entry for `git bisect`, as well as making
it easy to create regression testing scripts
that do not have to be run with `git bisect run`.

For example if you have a lot of regression tests,
you can have a script for each that tests if
if their is a bug and if so bisect it, and print
information about what is testing, all from with
script for each regression test. This way, you
can have a directory of regression tests that
are invoked just as normal script files and have
a master script that runs all of them.
So other developers on the project does not even
need to know how to use `git bisect`.



> 
> > +
> > +------------
> > +$ git bisect state
> > +------------
> > +
> > +Exit successfully (i.e., with return code 0), if and
> > only if the current +bisection has reached the first
> > bad or possible first bad commit. +
> >  Bisect visualize
> >  ~~~~~~~~~~~~~~~~
> >
> > diff --git a/git-bisect.sh b/git-bisect.sh
> > index 9f064b6..6ddda34 100755
> > --- a/git-bisect.sh
> > +++ b/git-bisect.sh
> > @@ -1,6 +1,6 @@
> >  #!/bin/sh
> >
> > -USAGE='[help|start|bad|good|skip|next|reset|visualize|replay|log|run]'
> > +USAGE='[help|start|bad|good|skip|next|reset|visualize|replay|log|run|state]'
> >  LONG_USAGE='git bisect help
> >         print this long help message.
> >  git bisect start [--no-checkout] [<bad> [<good>...]]
> > [--] [<pathspec>...] @@ -23,6 +23,8 @@ git bisect log
> >         show bisect log.
> >  git bisect run <cmd>...
> >         use <cmd>... to automatically bisect.
> > +git bisect state
> > +       check if the bisection is complete.
> >
> >  Please use "git help bisect" to get the full man page.'
> >
> > @@ -491,6 +493,11 @@ bisect_log () {
> >         cat "$GIT_DIR/BISECT_LOG"
> >  }
> >
> > +bisect_complete_state () {
> > +       cat "$GIT_DIR/BISECT_LOG" | tail -n 1 | grep -E
> > '^# (possible |)first bad commit:' > /dev/null
> > +       exit $?
> > +}
> > +
> >  case "$#" in
> >  0)
> >         usage ;;
> > @@ -519,6 +526,8 @@ case "$#" in
> >                 bisect_log ;;
> >         run)
> >                 bisect_run "$@" ;;
> > +       state)
> > +               bisect_complete_state ;;
> >         *)
> >                 usage ;;
> >         esac
> > --
> > 1.8.3.4
> >
> > --
> > To unsubscribe from this list: send the line
> > "unsubscribe git" in the body of a message to
> > majordomo@xxxxxxxxxxxxxxx More majordomo info at
> > http://vger.kernel.org/majordomo-info.html

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




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]