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:
parent
31aea7ef77
commit
c0fa8255c6
17
commit.c
17
commit.c
@ -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);
|
||||
|
||||
if (cleanup) {
|
||||
clear_commit_marks(rev1, PARENT1 | PARENT2 | UNINTERESTING);
|
||||
clear_commit_marks(rev2, PARENT1 | PARENT2 | UNINTERESTING);
|
||||
rev1->object.flags = flags1;
|
||||
rev2->object.flags = flags2;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
3
commit.h
3
commit.h
@ -105,7 +105,6 @@ struct commit_graft *read_graft_line(char *buf, int len);
|
||||
int register_commit_graft(struct commit_graft *, int);
|
||||
int read_graft_file(const char *graft_file);
|
||||
|
||||
extern struct commit_list *get_merge_bases(struct commit *rev1, struct commit *rev2);
|
||||
extern struct commit_list *get_merge_bases_clean(struct commit *rev1, struct commit *rev2);
|
||||
extern struct commit_list *get_merge_bases(struct commit *rev1, struct commit *rev2, int cleanup);
|
||||
|
||||
#endif /* COMMIT_H */
|
||||
|
@ -6,7 +6,7 @@ static int show_all = 0;
|
||||
|
||||
static int merge_base(struct commit *rev1, struct commit *rev2)
|
||||
{
|
||||
struct commit_list *result = get_merge_bases(rev1, rev2);
|
||||
struct commit_list *result = get_merge_bases(rev1, rev2, 0);
|
||||
|
||||
if (!result)
|
||||
return 1;
|
||||
|
@ -813,7 +813,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
|
||||
}
|
||||
|
||||
if (symmetric) {
|
||||
exclude = get_merge_bases_clean(a, b);
|
||||
exclude = get_merge_bases(a, b, 1);
|
||||
add_pending_commit_list(revs, exclude,
|
||||
flags_exclude);
|
||||
a->object.flags |= flags;
|
||||
|
Loading…
Reference in New Issue
Block a user