summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--commit.c21
-rw-r--r--commit.h3
-rw-r--r--merge-base.c2
-rw-r--r--revision.c2
4 files changed, 9 insertions, 19 deletions
diff --git a/commit.c b/commit.c
index 70a4effe5b..94c1d0ec59 100644
--- a/commit.c
+++ b/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);
-
- 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;
}
diff --git a/commit.h b/commit.h
index 3a26e29ce6..779ed82ed0 100644
--- a/commit.h
+++ b/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 */
diff --git a/merge-base.c b/merge-base.c
index b41f76cb72..59f723f404 100644
--- a/merge-base.c
+++ b/merge-base.c
@@ -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;
diff --git a/revision.c b/revision.c
index 9eb0b6da92..27fc1e3075 100644
--- a/revision.c
+++ b/revision.c
@@ -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;