bisect--helper: handle states directly
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. eliminate the need of `state` subcommand. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Đoàn Trần Công Danh <congdanhqx@gmail.com> Signed-off-by: Taylor Blau <me@ttaylorr.com>
This commit is contained in:
parent
5512376ae1
commit
df63421be9
@ -1347,18 +1347,6 @@ static int cmd_bisect__next(int argc, const char **argv UNUSED, const char *pref
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cmd_bisect__state(int argc, const char **argv, const char *prefix UNUSED)
|
|
||||||
{
|
|
||||||
int res;
|
|
||||||
struct bisect_terms terms = { 0 };
|
|
||||||
|
|
||||||
set_terms(&terms, "bad", "good");
|
|
||||||
get_terms(&terms);
|
|
||||||
res = bisect_state(&terms, argv, argc);
|
|
||||||
free_terms(&terms);
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int cmd_bisect__log(int argc, const char **argv UNUSED, const char *prefix UNUSED)
|
static int cmd_bisect__log(int argc, const char **argv UNUSED, const char *prefix UNUSED)
|
||||||
{
|
{
|
||||||
if (argc)
|
if (argc)
|
||||||
@ -1424,7 +1412,6 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
|
|||||||
OPT_SUBCOMMAND("terms", &fn, cmd_bisect__terms),
|
OPT_SUBCOMMAND("terms", &fn, cmd_bisect__terms),
|
||||||
OPT_SUBCOMMAND("start", &fn, cmd_bisect__start),
|
OPT_SUBCOMMAND("start", &fn, cmd_bisect__start),
|
||||||
OPT_SUBCOMMAND("next", &fn, cmd_bisect__next),
|
OPT_SUBCOMMAND("next", &fn, cmd_bisect__next),
|
||||||
OPT_SUBCOMMAND("state", &fn, cmd_bisect__state),
|
|
||||||
OPT_SUBCOMMAND("log", &fn, cmd_bisect__log),
|
OPT_SUBCOMMAND("log", &fn, cmd_bisect__log),
|
||||||
OPT_SUBCOMMAND("replay", &fn, cmd_bisect__replay),
|
OPT_SUBCOMMAND("replay", &fn, cmd_bisect__replay),
|
||||||
OPT_SUBCOMMAND("skip", &fn, cmd_bisect__skip),
|
OPT_SUBCOMMAND("skip", &fn, cmd_bisect__skip),
|
||||||
@ -1433,14 +1420,27 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix)
|
|||||||
OPT_SUBCOMMAND("run", &fn, cmd_bisect__run),
|
OPT_SUBCOMMAND("run", &fn, cmd_bisect__run),
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
argc = parse_options(argc, argv, prefix, options, git_bisect_usage, 0);
|
argc = parse_options(argc, argv, prefix, options, git_bisect_usage,
|
||||||
|
PARSE_OPT_SUBCOMMAND_OPTIONAL);
|
||||||
|
|
||||||
if (!fn)
|
if (!fn) {
|
||||||
usage_with_options(git_bisect_usage, options);
|
struct bisect_terms terms = { 0 };
|
||||||
|
|
||||||
|
if (!argc)
|
||||||
|
usage_msg_opt(_("need a command"), git_bisect_usage, options);
|
||||||
|
|
||||||
|
set_terms(&terms, "bad", "good");
|
||||||
|
get_terms(&terms);
|
||||||
|
if (check_and_set_terms(&terms, argv[0]))
|
||||||
|
usage_msg_optf(_("unknown command: '%s'"), git_bisect_usage,
|
||||||
|
options, argv[0]);
|
||||||
|
res = bisect_state(&terms, argv, argc);
|
||||||
|
free_terms(&terms);
|
||||||
|
} else {
|
||||||
argc--;
|
argc--;
|
||||||
argv++;
|
argv++;
|
||||||
|
|
||||||
res = fn(argc, argv, prefix);
|
res = fn(argc, argv, prefix);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle early success
|
* Handle early success
|
||||||
|
@ -57,8 +57,6 @@ case "$#" in
|
|||||||
case "$cmd" in
|
case "$cmd" in
|
||||||
help)
|
help)
|
||||||
git bisect -h ;;
|
git bisect -h ;;
|
||||||
bad|good|new|old|"$TERM_BAD"|"$TERM_GOOD")
|
|
||||||
git bisect--helper state "$cmd" "$@" ;;
|
|
||||||
log)
|
log)
|
||||||
git bisect--helper log || exit ;;
|
git bisect--helper log || exit ;;
|
||||||
*)
|
*)
|
||||||
|
Loading…
Reference in New Issue
Block a user