Re: [PATCH] Add command `git bisect state` that checks if the current bisection process has reached the first bad commit.
- From
Mattias Andrée <maandree@member.fsf.org>
- Date
- Aug 16, 2013, 04:54 UTC
- Message-ID
- <20130816065410.56665c03.maandree@kth.se>
- In-Reply-To
- <CAPig+cTfdnMRT61NQoHcF9-tt-wHABKPHi8HBXijQeB-jb1VyQ@mail.gmail.com>
On Fri, 16 Aug 2013 00:17:27 -0400 Eric Sunshine <sunshine@sunshineco.com> wrote:
Show 37 quoted lines
> On Thu, Aug 15, 2013 at 6:35 PM, Mattias Andrée > <maandree@operamail.com> wrote: > > This can be used for automated bisection without a > > check script. > > > > Signed-off-by: Mattias Andrée <maandree@operamail.com> > > --- > > 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`.
Show 63 quoted lines
>
> > +
> > +------------
> > +$ 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@vger.kernel.org More majordomo info at
> > http://vger.kernel.org/majordomo-info.html