{"thread":{"id":"9884","subject":"[PATCH 2/3] rev-list --bisect: Move some bisection code into best_bisection.","startedAt":"2007-09-17T03:28:29Z","lastAt":"2007-09-17T03:28:29Z","messageCount":1,"participants":["Christian Couder"],"isPatch":true,"patchVersion":1,"patchTotal":3},"messages":[{"id":"53250","messageId":"20070917052829.8fa67cf5.chriscool@tuxfamily.org","threadId":"9884","inReplyTo":null,"subject":"[PATCH 2/3] rev-list --bisect: Move some bisection code into best_bisection.","fromName":"Christian Couder","fromEmail":"chriscool@tuxfamily.org","sentAt":"2007-09-17T03:28:29Z","receivedAt":"2007-09-17T03:28:29Z","isPatch":true,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Signed-off-by: Christian Couder <chriscool@tuxfamily.org>\n---\n builtin-rev-list.c |   43 ++++++++++++++++++++++++++-----------------\n 1 files changed, 26 insertions(+), 17 deletions(-)\n\ndiff --git a/builtin-rev-list.c b/builtin-rev-list.c\nindex 2dae287..8c9635a 100644\n--- a/builtin-rev-list.c\n+++ b/builtin-rev-list.c\n@@ -255,6 +255,30 @@ static void show_list(const char *debug, int counted, int nr,\n }\n #endif /* DEBUG_BISECT */\n \n+static struct commit_list *best_bisection(struct commit_list *list, int nr)\n+{\n+\tstruct commit_list *p, *best;\n+\tint best_distance = -1;\n+\n+\tbest = list;\n+\tfor (p = list; p; p = p->next) {\n+\t\tint distance;\n+\t\tunsigned flags = p->item->object.flags;\n+\n+\t\tif (revs.prune_fn && !(flags & TREECHANGE))\n+\t\t\tcontinue;\n+\t\tdistance = weight(p);\n+\t\tif (nr - distance < distance)\n+\t\t\tdistance = nr - distance;\n+\t\tif (distance > best_distance) {\n+\t\t\tbest = p;\n+\t\t\tbest_distance = distance;\n+\t\t}\n+\t}\n+\n+\treturn best;\n+}\n+\n /*\n  * zero or positive weight is the number of interesting commits it can\n  * reach, including itself.  Especially, weight = 0 means it does not\n@@ -272,7 +296,7 @@ static struct commit_list *do_find_bisection(struct commit_list *list,\n \t\t\t\t\t     int nr, int *weights)\n {\n \tint n, counted, distance;\n-\tstruct commit_list *p, *best;\n+\tstruct commit_list *p;\n \n \tcounted = 0;\n \n@@ -377,22 +401,7 @@ static struct commit_list *do_find_bisection(struct commit_list *list,\n \tshow_list(\"bisection 2 counted all\", counted, nr, list);\n \n \t/* Then find the best one */\n-\tcounted = -1;\n-\tbest = list;\n-\tfor (p = list; p; p = p->next) {\n-\t\tunsigned flags = p->item->object.flags;\n-\n-\t\tif (revs.prune_fn && !(flags & TREECHANGE))\n-\t\t\tcontinue;\n-\t\tdistance = weight(p);\n-\t\tif (nr - distance < distance)\n-\t\t\tdistance = nr - distance;\n-\t\tif (distance > counted) {\n-\t\t\tbest = p;\n-\t\t\tcounted = distance;\n-\t\t}\n-\t}\n-\treturn best;\n+\treturn best_bisection(list, nr);\n }\n \n static struct commit_list *find_bisection(struct commit_list *list,\n-- \n1.5.3.1.59.g93705\n"}]}