Re: [PATCH 06/11] bisect--helper: make `--bisect-state` optional

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

 



Hi Elijah,

On Tue, 8 Feb 2022, Elijah Newren wrote:

> On Fri, Jan 28, 2022 at 3:52 PM Johannes Schindelin via GitGitGadget
> <gitgitgadget@xxxxxxxxx> wrote:
> >
> > From: Johannes Schindelin <johannes.schindelin@xxxxxx>
> >
> > In preparation for making `git bisect` a real built-in, let's prepare
> > the `bisect--helper` built-in to handle `git bisect--helper good` and
> > `git bisect--helper bad`, i.e. do not require the `--bisect-state`
> > option to be passed explicitly.
> >
> > To prepare for converting `bisect--helper` to a full built-in
> > implementation of `git bisect` (which must not require the
> > `--bisect-state` option to be specified at all), let's move the handling
> > toward the end of the `switch (cmdmode)` block.
> >
> > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx>
> > ---
> >  builtin/bisect--helper.c | 23 ++++++++++++++++-------
> >  1 file changed, 16 insertions(+), 7 deletions(-)
> >
> > diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c
> > index cc5a9ca41b9..219fa99cd0b 100644
> > --- a/builtin/bisect--helper.c
> > +++ b/builtin/bisect--helper.c
> > @@ -26,8 +26,8 @@ static const char * const git_bisect_helper_usage[] = {
> >         N_("git bisect--helper --bisect-start [--term-{new,bad}=<term> --term-{old,good}=<term>]"
> >                                             " [--no-checkout] [--first-parent] [<bad> [<good>...]] [--] [<paths>...]"),
> >         N_("git bisect--helper --bisect-next"),
> > -       N_("git bisect--helper --bisect-state (bad|new) [<rev>]"),
> > -       N_("git bisect--helper --bisect-state (good|old) [<rev>...]"),
> > +       N_("git bisect--helper [--bisect-state] (bad|new) [<rev>]"),
> > +       N_("git bisect--helper [--bisect-state] (good|old) [<rev>...]"),
> >         N_("git bisect--helper --bisect-replay <filename>"),
> >         N_("git bisect--helper --bisect-skip [(<rev>|<range>)...]"),
> >         N_("git bisect--helper --bisect-visualize"),
> > @@ -1210,6 +1210,13 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
> >                              git_bisect_helper_usage,
> >                              PARSE_OPT_KEEP_DASHDASH | PARSE_OPT_KEEP_UNKNOWN);
> >
> > +       if (!cmdmode && argc > 0) {
> > +               set_terms(&terms, "bad", "good");
> > +               get_terms(&terms);
> > +               if (!check_and_set_terms(&terms, argv[0]))
> > +                       cmdmode = BISECT_STATE;
> > +       }
> > +
> >         if (!cmdmode)
> >                 usage_with_options(git_bisect_helper_usage, options);
> >
> > @@ -1218,11 +1225,6 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
> >                 set_terms(&terms, "bad", "good");
> >                 res = bisect_start(&terms, argv, argc);
> >                 break;
> > -       case BISECT_STATE:
> > -               set_terms(&terms, "bad", "good");
> > -               get_terms(&terms);
> > -               res = bisect_state(&terms, argv, argc);
> > -               break;
> >         case BISECT_TERMS:
> >                 if (argc > 1)
> >                         return error(_("--bisect-terms requires 0 or 1 argument"));
> > @@ -1265,6 +1267,13 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
> >                 get_terms(&terms);
> >                 res = bisect_run(&terms, argv, argc);
> >                 break;
> > +       case BISECT_STATE:
> > +               if (!terms.term_good) {
> > +                       set_terms(&terms, "bad", "good");
> > +                       get_terms(&terms);
> > +               }
> > +               res = bisect_state(&terms, argv, argc);
> > +               break;
> >         default:
> >                 BUG("unknown subcommand %d", cmdmode);
> >         }
> > --
> > gitgitgadget
>
> Does it make sense to also include something like this:
>
> diff --git a/git-bisect.sh b/git-bisect.sh
> index 405cf76f2a..fbf56649d7 100755
> --- a/git-bisect.sh
> +++ b/git-bisect.sh
> @@ -60,7 +60,7 @@ case "$#" in
>         start)
>                 git bisect--helper --bisect-start "$@" ;;
>         bad|good|new|old|"$TERM_BAD"|"$TERM_GOOD")
> -               git bisect--helper --bisect-state "$cmd" "$@" ;;
> +               git bisect--helper "$cmd" "$@" ;;
>         skip)
>                 git bisect--helper --bisect-skip "$@" || exit;;
>         next)
>
> to prove that you've made it optional?  (Well, assuming one has run
> the tests with that change, but I did...)

Good point! That code will go away within the same patch series, of
course, but it is good to keep this in an intermediate commit.

Thanks,
Dscho




[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]

  Powered by Linux