rev-list --bisect: Bisection "distance" clean up.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
77c11e064c
commit
53271411e7
@ -189,7 +189,7 @@ static int count_interesting_parents(struct commit *commit)
|
|||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int halfway(struct commit_list *p, int distance, int nr)
|
static inline int halfway(struct commit_list *p, int nr)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Don't short-cut something we are not going to return!
|
* Don't short-cut something we are not going to return!
|
||||||
@ -202,8 +202,7 @@ static inline int halfway(struct commit_list *p, int distance, int nr)
|
|||||||
* 2 and 3 are halfway of 5.
|
* 2 and 3 are halfway of 5.
|
||||||
* 3 is halfway of 6 but 2 and 4 are not.
|
* 3 is halfway of 6 but 2 and 4 are not.
|
||||||
*/
|
*/
|
||||||
distance *= 2;
|
switch (2 * weight(p) - nr) {
|
||||||
switch (distance - nr) {
|
|
||||||
case -1: case 0: case 1:
|
case -1: case 0: case 1:
|
||||||
return 1;
|
return 1;
|
||||||
default:
|
default:
|
||||||
@ -295,7 +294,7 @@ static struct commit_list *best_bisection(struct commit_list *list, int nr)
|
|||||||
static struct commit_list *do_find_bisection(struct commit_list *list,
|
static struct commit_list *do_find_bisection(struct commit_list *list,
|
||||||
int nr, int *weights)
|
int nr, int *weights)
|
||||||
{
|
{
|
||||||
int n, counted, distance;
|
int n, counted;
|
||||||
struct commit_list *p;
|
struct commit_list *p;
|
||||||
|
|
||||||
counted = 0;
|
counted = 0;
|
||||||
@ -346,15 +345,13 @@ static struct commit_list *do_find_bisection(struct commit_list *list,
|
|||||||
for (p = list; p; p = p->next) {
|
for (p = list; p; p = p->next) {
|
||||||
if (p->item->object.flags & UNINTERESTING)
|
if (p->item->object.flags & UNINTERESTING)
|
||||||
continue;
|
continue;
|
||||||
n = weight(p);
|
if (weight(p) != -2)
|
||||||
if (n != -2)
|
|
||||||
continue;
|
continue;
|
||||||
distance = count_distance(p);
|
weight_set(p, count_distance(p));
|
||||||
clear_distance(list);
|
clear_distance(list);
|
||||||
weight_set(p, distance);
|
|
||||||
|
|
||||||
/* Does it happen to be at exactly half-way? */
|
/* Does it happen to be at exactly half-way? */
|
||||||
if (halfway(p, distance, nr))
|
if (halfway(p, nr))
|
||||||
return p;
|
return p;
|
||||||
counted++;
|
counted++;
|
||||||
}
|
}
|
||||||
@ -392,8 +389,7 @@ static struct commit_list *do_find_bisection(struct commit_list *list,
|
|||||||
weight_set(p, weight(q));
|
weight_set(p, weight(q));
|
||||||
|
|
||||||
/* Does it happen to be at exactly half-way? */
|
/* Does it happen to be at exactly half-way? */
|
||||||
distance = weight(p);
|
if (halfway(p, nr))
|
||||||
if (halfway(p, distance, nr))
|
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user