Hi there! First of all: I'm new to mailing-lists, sorry if I'm doing it wrong. I've found a bug in git merge-base, causing it to show not best common ancestors and duplicates under some circumstances (example is given in attached test case). Problem cause is algorithm used in get_octopus_merge_bases(), it iteratively concatenates merge bases, and don't care if there are duplicates or decsendants/ancestors in result. What I suggest as a solution is to simply reduce bases list after get_octopus_merge_bases(). Here is the fix: --- builtin/merge-base.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/builtin/merge-base.c b/builtin/merge-base.c index e88eb93..d6ad330 100644 --- a/builtin/merge-base.c +++ b/builtin/merge-base.c @@ -44,19 +44,19 @@ static struct commit *get_commit_reference(const char *arg) return r; } -static int handle_octopus(int count, const char **args, int reduce, int show_all) +static int handle_octopus(int count, const char **args, int reduce_only, int show_all) { struct commit_list *revs = NULL; struct commit_list *result; int i; - if (reduce) + if (reduce_only) show_all = 1; for (i = count - 1; i >= 0; i--) commit_list_insert(get_commit_reference(args[i]), &revs); - result = reduce ? reduce_heads(revs) : get_octopus_merge_bases(revs); + result = reduce_heads(reduce_only ? revs : get_octopus_merge_bases(revs)); if (!result) return 1; -- 1.8.3.1 -- 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