Merge branch 'jc/merge-bases'
The get_merge_bases*() API was easy to misuse by careless copy&paste coders, leaving object flags tainted in the commits that needed to be traversed. * jc/merge-bases: get_merge_bases(): always clean-up object flags bisect: clean flags after checking merge bases
This commit is contained in:
29
commit.c
29
commit.c
@ -867,7 +867,7 @@ struct commit_list *get_octopus_merge_bases(struct commit_list *in)
|
||||
|
||||
for (j = ret; j; j = j->next) {
|
||||
struct commit_list *bases;
|
||||
bases = get_merge_bases(i->item, j->item, 1);
|
||||
bases = get_merge_bases(i->item, j->item);
|
||||
if (!new)
|
||||
new = bases;
|
||||
else
|
||||
@ -936,10 +936,10 @@ static int remove_redundant(struct commit **array, int cnt)
|
||||
return filled;
|
||||
}
|
||||
|
||||
struct commit_list *get_merge_bases_many(struct commit *one,
|
||||
int n,
|
||||
struct commit **twos,
|
||||
int cleanup)
|
||||
static struct commit_list *get_merge_bases_many_0(struct commit *one,
|
||||
int n,
|
||||
struct commit **twos,
|
||||
int cleanup)
|
||||
{
|
||||
struct commit_list *list;
|
||||
struct commit **rslt;
|
||||
@ -977,10 +977,23 @@ struct commit_list *get_merge_bases_many(struct commit *one,
|
||||
return result;
|
||||
}
|
||||
|
||||
struct commit_list *get_merge_bases(struct commit *one, struct commit *two,
|
||||
int cleanup)
|
||||
struct commit_list *get_merge_bases_many(struct commit *one,
|
||||
int n,
|
||||
struct commit **twos)
|
||||
{
|
||||
return get_merge_bases_many(one, 1, &two, cleanup);
|
||||
return get_merge_bases_many_0(one, n, twos, 1);
|
||||
}
|
||||
|
||||
struct commit_list *get_merge_bases_many_dirty(struct commit *one,
|
||||
int n,
|
||||
struct commit **twos)
|
||||
{
|
||||
return get_merge_bases_many_0(one, n, twos, 0);
|
||||
}
|
||||
|
||||
struct commit_list *get_merge_bases(struct commit *one, struct commit *two)
|
||||
{
|
||||
return get_merge_bases_many_0(one, 1, &two, 1);
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user