Browse Source

rev-list: move code to show bisect vars into its own function

This is a straightforward clean up to make "cmd_rev_list" function
smaller.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Christian Couder 16 years ago committed by Junio C Hamano
parent
commit
9996983c9c
  1. 83
      builtin-rev-list.c

83
builtin-rev-list.c

@ -226,6 +226,49 @@ static int estimate_bisect_steps(int all) @@ -226,6 +226,49 @@ static int estimate_bisect_steps(int all)
return (e < 3 * x) ? n : n - 1;
}

static int show_bisect_vars(int reaches, int all, int bisect_find_all)
{
int cnt;
char hex[41];

if (!revs.commits)
return 1;

/*
* revs.commits can reach "reaches" commits among
* "all" commits. If it is good, then there are
* (all-reaches) commits left to be bisected.
* On the other hand, if it is bad, then the set
* to bisect is "reaches".
* A bisect set of size N has (N-1) commits further
* to test, as we already know one bad one.
*/
cnt = all - reaches;
if (cnt < reaches)
cnt = reaches;
strcpy(hex, sha1_to_hex(revs.commits->item->object.sha1));

if (bisect_find_all) {
traverse_commit_list(&revs, show_commit, show_object);
printf("------\n");
}

printf("bisect_rev=%s\n"
"bisect_nr=%d\n"
"bisect_good=%d\n"
"bisect_bad=%d\n"
"bisect_all=%d\n"
"bisect_steps=%d\n",
hex,
cnt - 1,
all - reaches - 1,
reaches - 1,
all,
estimate_bisect_steps(all));

return 0;
}

int cmd_rev_list(int argc, const char **argv, const char *prefix)
{
struct commit_list *list;
@ -313,44 +356,8 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix) @@ -313,44 +356,8 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)

revs.commits = find_bisection(revs.commits, &reaches, &all,
bisect_find_all);
if (bisect_show_vars) {
int cnt;
char hex[41];
if (!revs.commits)
return 1;
/*
* revs.commits can reach "reaches" commits among
* "all" commits. If it is good, then there are
* (all-reaches) commits left to be bisected.
* On the other hand, if it is bad, then the set
* to bisect is "reaches".
* A bisect set of size N has (N-1) commits further
* to test, as we already know one bad one.
*/
cnt = all - reaches;
if (cnt < reaches)
cnt = reaches;
strcpy(hex, sha1_to_hex(revs.commits->item->object.sha1));

if (bisect_find_all) {
traverse_commit_list(&revs, show_commit, show_object);
printf("------\n");
}

printf("bisect_rev=%s\n"
"bisect_nr=%d\n"
"bisect_good=%d\n"
"bisect_bad=%d\n"
"bisect_all=%d\n"
"bisect_steps=%d\n",
hex,
cnt - 1,
all - reaches - 1,
reaches - 1,
all,
estimate_bisect_steps(all));
return 0;
}
if (bisect_show_vars)
return show_bisect_vars(reaches, all, bisect_find_all);
}

traverse_commit_list(&revs,

Loading…
Cancel
Save