Fold get_merge_bases_clean() into get_merge_bases()

Change get_merge_bases() to be able to clean up after itself if
needed by adding a cleanup parameter.

We don't need to save the flags and restore them afterwards anymore;
that was a leftover from before the flags were moved out of the
range used in revision.c.  clear_commit_marks() sets them to zero,
which is enough.

Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Acked-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Rene Scharfe
2006-07-02 11:49:38 +02:00
committed by Junio C Hamano
parent 31aea7ef77
commit c0fa8255c6
4 changed files with 9 additions and 19 deletions

View File

@ -1012,7 +1012,8 @@ static void mark_reachable_commits(struct commit_list *result,
}
}
struct commit_list *get_merge_bases(struct commit *rev1, struct commit *rev2)
struct commit_list *get_merge_bases(struct commit *rev1, struct commit *rev2,
int cleanup)
{
struct commit_list *list = NULL;
struct commit_list *result = NULL;
@ -1080,20 +1081,10 @@ struct commit_list *get_merge_bases(struct commit *rev1, struct commit *rev2)
tmp = next;
}
return result;
}
struct commit_list *get_merge_bases_clean(struct commit *rev1,
struct commit *rev2)
{
unsigned int flags1 = rev1->object.flags;
unsigned int flags2 = rev2->object.flags;
struct commit_list *result = get_merge_bases(rev1, rev2);
clear_commit_marks(rev1, PARENT1 | PARENT2 | UNINTERESTING);
clear_commit_marks(rev2, PARENT1 | PARENT2 | UNINTERESTING);
rev1->object.flags = flags1;
rev2->object.flags = flags2;
if (cleanup) {
clear_commit_marks(rev1, PARENT1 | PARENT2 | UNINTERESTING);
clear_commit_marks(rev2, PARENT1 | PARENT2 | UNINTERESTING);
}
return result;
}