On Thu, Aug 23, 2012 at 9:20 PM, Thomas Rast <trast@xxxxxxxxxxxxxxx> wrote: > At the very least it should be possible to change in_merge_bases() to > not do any of the post-filtering; perhaps like the patch below. It > passes the test suite. The whole "merge bases of A and a list of Bs" > thing is blowing my overheated mind, though, so I'm not able to convince > myself that it is correct in all cases. > > diff --git i/commit.c w/commit.c > index 65a8485..70427ab 100644 > --- i/commit.c > +++ w/commit.c > @@ -837,10 +837,13 @@ int in_merge_bases(struct commit *commit, struct commit **reference, int num) > struct commit_list *bases, *b; > int ret = 0; > > - if (num == 1) > - bases = get_merge_bases(commit, *reference, 1); > - else > + if (num != 1) > die("not yet"); > + > + bases = merge_bases_many(commit, 1, reference); > + clear_commit_marks(commit, all_flags); > + clear_commit_marks(*reference, all_flags); > + > for (b = bases; b; b = b->next) { > if (!hashcmp(commit->object.sha1, b->item->object.sha1)) { > ret = 1; Without looking into detail (as I'm not familiar with this code), this patch does not help much. Without the patch: $ time ./git merge-base a4f2db3 b95a282 ed36e5bd41f7192e42e9b4c573875a343a9daf48 real 0m19.988s user 0m19.797s sys 0m0.082s With the patch: $ time ./git merge-base a4f2db3 b95a282 ed36e5bd41f7192e42e9b4c573875a343a9daf48 real 0m19.560s user 0m19.448s sys 0m0.037s -- Duy -- 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