Skip to content

Commit

Permalink
merge-base: separate "--independent" codepath into its own helper
Browse files Browse the repository at this point in the history
It piggybacks on an unrelated handle_octopus() function only because
there are some similarities between the way they need to preprocess
their input and output their result.  There is nothing similar in
the true logic between these two operations.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Dec 30, 2013
1 parent 2f93541 commit e2f5df4
Showing 1 changed file with 25 additions and 6 deletions.
31 changes: 25 additions & 6 deletions builtin/merge-base.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,19 +44,36 @@ 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_independent(int count, const char **args)
{
struct commit_list *revs = NULL;
struct commit_list *result;
int i;

if (reduce)
show_all = 1;
for (i = count - 1; i >= 0; i--)
commit_list_insert(get_commit_reference(args[i]), &revs);

result = reduce_heads(revs);
if (!result)
return 1;

while (result) {
printf("%s\n", sha1_to_hex(result->item->object.sha1));
result = result->next;
}
return 0;
}

static int handle_octopus(int count, const char **args, int show_all)
{
struct commit_list *revs = NULL;
struct commit_list *result;
int i;

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 = get_octopus_merge_bases(revs);

if (!result)
return 1;
Expand Down Expand Up @@ -114,8 +131,10 @@ int cmd_merge_base(int argc, const char **argv, const char *prefix)
if (reduce && (show_all || octopus))
die("--independent cannot be used with other options");

if (octopus || reduce)
return handle_octopus(argc, argv, reduce, show_all);
if (octopus)
return handle_octopus(argc, argv, show_all);
else if (reduce)
return handle_independent(argc, argv);

rev = xmalloc(argc * sizeof(*rev));
while (argc-- > 0)
Expand Down

0 comments on commit e2f5df4

Please sign in to comment.