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

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

 



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...)



[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