mirror of
https://github.com/git/git.git
synced 2024-09-29 16:41:53 +02:00
bisect: do not run show-branch just to show the current commit
In scripted versions of "git bisect", we used "git show-branch" to describe a single commit in the bisect log and also to the interactive user after checking out the next version to be tested. The former use of "git show-branch" was lost when the helper function that wrote bisect log entries was rewritten at 0f30233a (bisect--helper: `bisect_write` shell function in C, 2019-01-02) in C But we've kept the latter ever since 0871984d (bisect: make "git bisect" use new "--next-all" bisect-helper function, 2009-05-09) started using the faithful C-rewrite introduced at ef24c7ca (bisect--helper: add "--next-exit" to output bisect results, 2009-04-19). Showing "[<full hex>] <subject>" is simple enough with our helper pretty.c::format_commit_message() and spawning show-branch is an overkill. Let's lose one external process. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ebf3c04b26
commit
ffcb4e94d3
16
bisect.c
16
bisect.c
@ -23,7 +23,6 @@ static struct oid_array skipped_revs;
|
|||||||
static struct object_id *current_bad_oid;
|
static struct object_id *current_bad_oid;
|
||||||
|
|
||||||
static const char *argv_checkout[] = {"checkout", "-q", NULL, "--", NULL};
|
static const char *argv_checkout[] = {"checkout", "-q", NULL, "--", NULL};
|
||||||
static const char *argv_show_branch[] = {"show-branch", NULL, NULL};
|
|
||||||
|
|
||||||
static const char *term_bad;
|
static const char *term_bad;
|
||||||
static const char *term_good;
|
static const char *term_good;
|
||||||
@ -729,6 +728,9 @@ static enum bisect_error bisect_checkout(const struct object_id *bisect_rev, int
|
|||||||
{
|
{
|
||||||
char bisect_rev_hex[GIT_MAX_HEXSZ + 1];
|
char bisect_rev_hex[GIT_MAX_HEXSZ + 1];
|
||||||
enum bisect_error res = BISECT_OK;
|
enum bisect_error res = BISECT_OK;
|
||||||
|
struct commit *commit;
|
||||||
|
struct pretty_print_context pp = {0};
|
||||||
|
struct strbuf commit_msg = STRBUF_INIT;
|
||||||
|
|
||||||
oid_to_hex_r(bisect_rev_hex, bisect_rev);
|
oid_to_hex_r(bisect_rev_hex, bisect_rev);
|
||||||
update_ref(NULL, "BISECT_EXPECTED_REV", bisect_rev, NULL, 0, UPDATE_REFS_DIE_ON_ERR);
|
update_ref(NULL, "BISECT_EXPECTED_REV", bisect_rev, NULL, 0, UPDATE_REFS_DIE_ON_ERR);
|
||||||
@ -748,13 +750,11 @@ static enum bisect_error bisect_checkout(const struct object_id *bisect_rev, int
|
|||||||
return -abs(res);
|
return -abs(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
argv_show_branch[1] = bisect_rev_hex;
|
commit = lookup_commit_reference(the_repository, bisect_rev);
|
||||||
res = run_command_v_opt(argv_show_branch, RUN_GIT_CMD);
|
format_commit_message(commit, "[%H] %s%n", &commit_msg, &pp);
|
||||||
/*
|
fputs(commit_msg.buf, stdout);
|
||||||
* Errors in `run_command()` itself, signaled by res < 0,
|
strbuf_release(&commit_msg);
|
||||||
* and errors in the child process, signaled by res > 0
|
|
||||||
* can both be treated as regular BISECT_FAILURE (-1).
|
|
||||||
*/
|
|
||||||
return -abs(res);
|
return -abs(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user