Due to popular request ;-), 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>
diff --git a/commit.c b/commit.c
index 70a4eff..94c1d0e 100644
--- a/commit.c
+++ b/commit.c
@@ -1012,7 +1012,8 @@ static void mark_reachable_commits(struc
}
}
-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(stru
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 3a26e29..779ed82 100644
--- a/commit.h
+++ b/commit.h
@@ -105,7 +105,6 @@ struct commit_graft *read_graft_line(cha
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 b41f76c..59f723f 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 1da6ce3..7865fa4 100644
--- a/revision.c
+++ b/revision.c
@@ -814,7 +814,7 @@ int setup_revisions(int argc, const char
}
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;
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
| Ryan Hope | reiser4 for 2.6.27-rc1 |
| James Bottomley | Re: Integration of SCST in the mainstream Linux kernel |
| Tim Tassonis | reiser4 for 2.6.27-rc1 |
| Chuck Ebbert | Why do so many machines need "noapic"? |
git: | |
| Alan Chandler | Question around git-shell usage in Everyday Git |
| Kyle Moffett | Using GIT to store /etc (Or: How to make GIT store all file permission bits) |
| Junio C Hamano | Re: [PATCH] Teach remote machinery about remotes.default config variable |
| Jakub Narebski | [PATCH] gitweb: Use File::Find::find in git_get_projects_list |
| Richard Stallman | Real men don't attack straw men |
| Bertram Scharpf | First install: Grub doesn't find partitions |
| Girish Venkatachalam | Hazy top of mind questions on spam control with OpenBSD |
| Jussi Peltola | Re: Remote Admin Card - Dell DRAC or HP ILO2 ? |
| Jim Winstead Jr. | Re: Root Disk/Book Disk Compatibility |
| Les Andrzejewski | X386/WD90C31/SUMSUNG SYNC MASTER 4 |
| Stephen Pierce | SLS |
| Sander van Malssen | uemacs |
