"Avery Pennarun" <apenwarr@xxxxxxxxx> writes: > $ git rev-list --first-parent --bisect 5109c91 ^d798a2bfe094 > Segmentation fault Totally untested, usefulness fairly unknown. builtin-rev-list.c | 18 ++++++++++++++---- 1 files changed, 14 insertions(+), 4 deletions(-) diff --git c/builtin-rev-list.c w/builtin-rev-list.c index 893762c..aab198f 100644 --- c/builtin-rev-list.c +++ w/builtin-rev-list.c @@ -530,19 +530,23 @@ static struct commit_list *do_find_bisection(struct commit_list *list, return best_bisection_sorted(list, nr); } +#define BISECT_FIND_ALL 01 +#define BISECT_FIRST_PARENT_ONLY 02 static struct commit_list *find_bisection(struct commit_list *list, int *reaches, int *all, - int find_all) + int flag) { int nr, on_list; struct commit_list *p, *best, *next, *last; int *weights; + int find_all = flag & BISECT_FIND_ALL; + int first_parent_only = flag & BISECT_FIRST_PARENT_ONLY; show_list("bisection 2 entry", 0, 0, list); /* * Count the number of total and tree-changing items on the - * list, while reversing the list. + * list, while reversing the list and removing. */ for (nr = on_list = 0, last = NULL, p = list; p; @@ -557,6 +561,8 @@ static struct commit_list *find_bisection(struct commit_list *list, if (!(flags & TREESAME)) nr++; on_list++; + if (first_parent_only && p->item->parents) + p->item->parents->next = NULL; } list = last; show_list("bisection 2 sorted", 0, nr, list); @@ -656,9 +662,13 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix) if (bisect_list) { int reaches = reaches, all = all; + int flag = 0; + if (bisect_find_all) + flag |= BISECT_FIND_ALL; + if (revs.first_parent_only) + flag |= BISECT_FIRST_PARENT_ONLY; + revs.commits = find_bisection(revs.commits, &reaches, &all, flag); - revs.commits = find_bisection(revs.commits, &reaches, &all, - bisect_find_all); if (bisect_show_vars) { int cnt; char hex[41]; -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html