Skip to content

Commit

Permalink
Move estimate_bisect_steps to libgit.a
Browse files Browse the repository at this point in the history
This function is used by bisect.c, part of libgit.a while
estimate_bisect_steps stays in builtin/rev-list.c. Move it to bisect.a
so we won't have undefine reference if a standalone program that uses
libgit.a happens to pull it in.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Jeff King <peff@peff.net>
  • Loading branch information
pclouds authored and peff committed Oct 29, 2012
1 parent db699a8 commit c43cb38
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 39 deletions.
38 changes: 38 additions & 0 deletions bisect.c
Expand Up @@ -956,3 +956,41 @@ int bisect_next_all(const char *prefix, int no_checkout)
return bisect_checkout(bisect_rev_hex, no_checkout); return bisect_checkout(bisect_rev_hex, no_checkout);
} }


static inline int log2i(int n)
{
int log2 = 0;

for (; n > 1; n >>= 1)
log2++;

return log2;
}

static inline int exp2i(int n)
{
return 1 << n;
}

/*
* Estimate the number of bisect steps left (after the current step)
*
* For any x between 0 included and 2^n excluded, the probability for
* n - 1 steps left looks like:
*
* P(2^n + x) == (2^n - x) / (2^n + x)
*
* and P(2^n + x) < 0.5 means 2^n < 3x
*/
int estimate_bisect_steps(int all)
{
int n, x, e;

if (all < 3)
return 0;

n = log2i(all);
e = exp2i(n);
x = all - e;

return (e < 3 * x) ? n : n - 1;
}
39 changes: 0 additions & 39 deletions builtin/rev-list.c
Expand Up @@ -201,45 +201,6 @@ static void show_edge(struct commit *commit)
printf("-%s\n", sha1_to_hex(commit->object.sha1)); printf("-%s\n", sha1_to_hex(commit->object.sha1));
} }


static inline int log2i(int n)
{
int log2 = 0;

for (; n > 1; n >>= 1)
log2++;

return log2;
}

static inline int exp2i(int n)
{
return 1 << n;
}

/*
* Estimate the number of bisect steps left (after the current step)
*
* For any x between 0 included and 2^n excluded, the probability for
* n - 1 steps left looks like:
*
* P(2^n + x) == (2^n - x) / (2^n + x)
*
* and P(2^n + x) < 0.5 means 2^n < 3x
*/
int estimate_bisect_steps(int all)
{
int n, x, e;

if (all < 3)
return 0;

n = log2i(all);
e = exp2i(n);
x = all - e;

return (e < 3 * x) ? n : n - 1;
}

void print_commit_list(struct commit_list *list, void print_commit_list(struct commit_list *list,
const char *format_cur, const char *format_cur,
const char *format_last) const char *format_last)
Expand Down

0 comments on commit c43cb38

Please sign in to comment.