Code

Fold get_merge_bases_clean() into get_merge_bases()
authorRene Scharfe <rene.scharfe@lsrfire.ath.cx>
Sun, 2 Jul 2006 09:49:38 +0000 (11:49 +0200)
committerJunio 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>
commit.c
commit.h
merge-base.c
revision.c

index 70a4effe5b28d49a0228ec182f0d89b356537924..94c1d0ec5903d8987e31847d1ff217f9852df105 100644 (file)
--- 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;
 }
index 3a26e29ce6142ccafa5365a91cebf6b6a7234297..779ed82ed0ce2fb1a643b1cfa0ffe0fd3107ed09 100644 (file)
--- 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 */
index b41f76cb72d02ba77ec04693ec1023d5707571a1..59f723f4047f831165b8d52ac13def398e663ac3 100644 (file)
@@ -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;
index 9eb0b6da92875ec7b01ff3af7aaf46f1d2caadaf..27fc1e30753a07ba686958168ce2c682c7376b53 100644 (file)
@@ -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;