Add '--bisect' revision machinery argument
I personally use "git bisect visualize" all the time when I bisect, but it turns out that that is not a very flexible model. Sometimes I want to do bisection based on all commits (no pathname limiting), but then visualize the current bisection tree with just a few pathnames because I _suspect_ those pathnames are involved in the problem but am not totally sure about them. And at other times, I want to use other revision parsing logic, none of which is available with "git bisect visualize". So this adds "--bisect" as a revision parsing argument, and as a result it just works with all the normal logging tools. So now I can just do gitk --bisect --simplify-by-decoration filename-here etc. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
78d553b7d7
commit
ad3f9a71a8
19
revision.c
19
revision.c
@ -994,7 +994,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg
|
||||
if (!strcmp(arg, "--all") || !strcmp(arg, "--branches") ||
|
||||
!strcmp(arg, "--tags") || !strcmp(arg, "--remotes") ||
|
||||
!strcmp(arg, "--reflog") || !strcmp(arg, "--not") ||
|
||||
!strcmp(arg, "--no-walk") || !strcmp(arg, "--do-walk"))
|
||||
!strcmp(arg, "--no-walk") || !strcmp(arg, "--do-walk") ||
|
||||
!strcmp(arg, "--bisect"))
|
||||
{
|
||||
unkv[(*unkc)++] = arg;
|
||||
return 1;
|
||||
@ -1218,6 +1219,16 @@ void parse_revision_opt(struct rev_info *revs, struct parse_opt_ctx_t *ctx,
|
||||
ctx->argc -= n;
|
||||
}
|
||||
|
||||
static int for_each_bad_bisect_ref(each_ref_fn fn, void *cb_data)
|
||||
{
|
||||
return for_each_ref_in("refs/bisect/bad", fn, cb_data);
|
||||
}
|
||||
|
||||
static int for_each_good_bisect_ref(each_ref_fn fn, void *cb_data)
|
||||
{
|
||||
return for_each_ref_in("refs/bisect/good", fn, cb_data);
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse revision information, filling in the "rev_info" structure,
|
||||
* and removing the used arguments from the argument list.
|
||||
@ -1259,6 +1270,12 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
|
||||
handle_refs(revs, flags, for_each_branch_ref);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--bisect")) {
|
||||
handle_refs(revs, flags, for_each_bad_bisect_ref);
|
||||
handle_refs(revs, flags ^ UNINTERESTING, for_each_good_bisect_ref);
|
||||
revs->bisect = 1;
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(arg, "--tags")) {
|
||||
handle_refs(revs, flags, for_each_tag_ref);
|
||||
continue;
|
||||
|
||||
Reference in New Issue
Block a user