summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 31aea7e)
raw | patch | inline | side by side (parent: 31aea7e)
author | Rene Scharfe <rene.scharfe@lsrfire.ath.cx> | |
Sun, 2 Jul 2006 09:49:38 +0000 (11:49 +0200) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Sun, 2 Jul 2006 17:58:25 +0000 (10:58 -0700) |
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>
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>
commit.c | patch | blob | history | |
commit.h | patch | blob | history | |
merge-base.c | patch | blob | history | |
revision.c | patch | blob | history |
diff --git a/commit.c b/commit.c
index 70a4effe5b28d49a0228ec182f0d89b356537924..94c1d0ec5903d8987e31847d1ff217f9852df105 100644 (file)
--- a/commit.c
+++ b/commit.c
}
}
-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 3a26e29ce6142ccafa5365a91cebf6b6a7234297..779ed82ed0ce2fb1a643b1cfa0ffe0fd3107ed09 100644 (file)
--- a/commit.h
+++ b/commit.h
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 b41f76cb72d02ba77ec04693ec1023d5707571a1..59f723f4047f831165b8d52ac13def398e663ac3 100644 (file)
--- a/merge-base.c
+++ b/merge-base.c
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 9eb0b6da92875ec7b01ff3af7aaf46f1d2caadaf..27fc1e30753a07ba686958168ce2c682c7376b53 100644 (file)
--- 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;