summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 7c6f8aa)
raw | patch | inline | side by side (parent: 7c6f8aa)
author | Rene Scharfe <rene.scharfe@lsrfire.ath.cx> | |
Sat, 1 Jul 2006 23:29:26 +0000 (01:29 +0200) | ||
committer | Junio C Hamano <junkio@cox.net> | |
Sun, 2 Jul 2006 01:13:25 +0000 (18:13 -0700) |
Add get_merge_bases_clean(), a wrapper for get_merge_bases() that cleans
up after doing its work and make get_merge_bases() NOT clean up.
Single-shot programs like git-merge-base can use the dirty and fast
version.
Also move the object flags used in get_merge_bases() out of the range
defined in revision.h. This fixes the "66ae0c77...ced9456a
89719209...262a6ef7" test of the ... operator which is introduced with
the next patch.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
up after doing its work and make get_merge_bases() NOT clean up.
Single-shot programs like git-merge-base can use the dirty and fast
version.
Also move the object flags used in get_merge_bases() out of the range
defined in revision.h. This fixes the "66ae0c77...ced9456a
89719209...262a6ef7" test of the ... operator which is introduced with
the next patch.
Signed-off-by: Rene Scharfe <rene.scharfe@lsrfire.ath.cx>
Signed-off-by: Junio C Hamano <junkio@cox.net>
commit.c | patch | blob | history | |
commit.h | patch | blob | history |
diff --git a/commit.c b/commit.c
index 0431027ef2398a8fc48b5d4fff251d87efcd62c0..593414df36a593c892d0d35d7204860f887c7fff 100644 (file)
--- a/commit.c
+++ b/commit.c
/* merge-rebase stuff */
-#define PARENT1 1
-#define PARENT2 2
-#define UNINTERESTING 4
+/* bits #0..7 in revision.h */
+#define PARENT1 (1u<< 8)
+#define PARENT2 (1u<< 9)
+#define UNINTERESTING (1u<<10)
static struct commit *interesting(struct commit_list *list)
{
@@ -1080,9 +1081,20 @@ struct commit_list *get_merge_bases(struct commit *rev1, struct commit *rev2)
tmp = next;
}
- /* reset flags */
+ 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;
return result;
}
diff --git a/commit.h b/commit.h
index 89b9dad7ccfc8ed50bbce3989d4a573eea4c1a99..3a26e29ce6142ccafa5365a91cebf6b6a7234297 100644 (file)
--- a/commit.h
+++ b/commit.h
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);
#endif /* COMMIT_H */