public inbox for git@vger.kernel.org 
 help / color / mirror / Atom feed
* [PATCH 1/2] merge-base: fix duplicates and not best ancestors in output
@ 2013-12-28 10:22 Василий Макаров
  2013-12-30 19:01 ` Junio C Hamano
  0 siblings, 1 reply; 4+ messages in thread
From: Василий Макаров @ 2013-12-28 10:22 UTC (permalink / raw)
  To: git; +Cc: jrnieder

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

^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2013-12-31 11:16 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-28 10:22 [PATCH 1/2] merge-base: fix duplicates and not best ancestors in output Василий Макаров
2013-12-30 19:01 ` Junio C Hamano
2013-12-30 20:06   ` Junio C Hamano
2013-12-31 11:15     ` Василий Макаров

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox