aboutsummaryrefslogtreecommitdiff
path: root/builtin
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2014-10-30 12:20:44 -0700
committerJunio C Hamano <gitster@pobox.com>2014-10-30 12:51:10 -0700
commit2ce406ccb85c4546b6d19309a6101b37c7bd952e (patch)
treeed00f07eab627dc4217ac76e38a652201f99aac2 /builtin
parentd76c9e95b435b660f8f1b3e01d3c2f934e2ec441 (diff)
downloadgit-2ce406ccb85c4546b6d19309a6101b37c7bd952e.tar.gz
git-2ce406ccb85c4546b6d19309a6101b37c7bd952e.tar.xz
get_merge_bases(): always clean-up object flags
The callers of get_merge_bases() can choose to leave object flags used during the merge-base traversal by passing cleanup=0 as a parameter, but in practice a very few callers can afford to do so (namely, "git merge-base"), as they need to compute merge base in preparation for other processing of their own and they need to see the object without contaminate flags. Change the function signature of get_merge_bases_many() and get_merge_bases() to drop the cleanup parameter, so that the majority of the callers do not have to say ", 1" at the end. Give a new get_merge_bases_many_dirty() API to support only a few callers that know they do not need to spend cycles cleaning up the object flags. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r--builtin/merge-base.c4
-rw-r--r--builtin/merge.c4
-rw-r--r--builtin/rev-parse.c2
3 files changed, 5 insertions, 5 deletions
diff --git a/builtin/merge-base.c b/builtin/merge-base.c
index 0ecde8da3..fdebef6fa 100644
--- a/builtin/merge-base.c
+++ b/builtin/merge-base.c
@@ -10,7 +10,7 @@ static int show_merge_base(struct commit **rev, int rev_nr, int show_all)
{
struct commit_list *result;
- result = get_merge_bases_many(rev[0], rev_nr - 1, rev + 1, 0);
+ result = get_merge_bases_many_dirty(rev[0], rev_nr - 1, rev + 1);
if (!result)
return 1;
@@ -176,7 +176,7 @@ static int handle_fork_point(int argc, const char **argv)
for (i = 0; i < revs.nr; i++)
revs.commit[i]->object.flags &= ~TMP_MARK;
- bases = get_merge_bases_many(derived, revs.nr, revs.commit, 0);
+ bases = get_merge_bases_many_dirty(derived, revs.nr, revs.commit);
/*
* There should be one and only one merge base, when we found
diff --git a/builtin/merge.c b/builtin/merge.c
index 8763b2efa..fbdbd78da 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1330,7 +1330,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
if (!remoteheads)
; /* already up-to-date */
else if (!remoteheads->next)
- common = get_merge_bases(head_commit, remoteheads->item, 1);
+ common = get_merge_bases(head_commit, remoteheads->item);
else {
struct commit_list *list = remoteheads;
commit_list_insert(head_commit, &list);
@@ -1427,7 +1427,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
* merge_bases again, otherwise "git merge HEAD^
* HEAD^^" would be missed.
*/
- common_one = get_merge_bases(head_commit, j->item, 1);
+ common_one = get_merge_bases(head_commit, j->item);
if (hashcmp(common_one->item->object.sha1,
j->item->object.sha1)) {
up_to_date = 0;
diff --git a/builtin/rev-parse.c b/builtin/rev-parse.c
index 1a6122d3a..ed6db3731 100644
--- a/builtin/rev-parse.c
+++ b/builtin/rev-parse.c
@@ -277,7 +277,7 @@ static int try_difference(const char *arg)
struct commit *a, *b;
a = lookup_commit_reference(sha1);
b = lookup_commit_reference(end);
- exclude = get_merge_bases(a, b, 1);
+ exclude = get_merge_bases(a, b);
while (exclude) {
struct commit_list *n = exclude->next;
show_rev(REVERSED,