summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 0b9a969)
raw | patch | inline | side by side (parent: 0b9a969)
author | Miklos Vajna <vmiklos@frugalware.org> | |
Fri, 27 Jun 2008 16:22:00 +0000 (18:22 +0200) | ||
committer | Junio C Hamano <gitster@pobox.com> | |
Tue, 1 Jul 2008 05:45:51 +0000 (22:45 -0700) |
This is like get_merge_bases() but it works for multiple heads, like
show-branch --merge-base.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
show-branch --merge-base.
Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit.c | patch | blob | history | |
commit.h | patch | blob | history |
diff --git a/commit.c b/commit.c
index bbf9c75416537f4e64416d54b03cd00f9d0a56db..6052ca34c803e6af432309041c8e3201b71efca4 100644 (file)
--- a/commit.c
+++ b/commit.c
return result;
}
+struct commit_list *get_octopus_merge_bases(struct commit_list *in)
+{
+ struct commit_list *i, *j, *k, *ret = NULL;
+ struct commit_list **pptr = &ret;
+
+ for (i = in; i; i = i->next) {
+ if (!ret)
+ pptr = &commit_list_insert(i->item, pptr)->next;
+ else {
+ struct commit_list *new = NULL, *end = NULL;
+
+ for (j = ret; j; j = j->next) {
+ struct commit_list *bases;
+ bases = get_merge_bases(i->item, j->item, 1);
+ if (!new)
+ new = bases;
+ else
+ end->next = bases;
+ for (k = bases; k; k = k->next)
+ end = k;
+ }
+ ret = new;
+ }
+ }
+ return ret;
+}
+
struct commit_list *get_merge_bases(struct commit *one,
struct commit *two, int cleanup)
{
diff --git a/commit.h b/commit.h
index 7f8c5ee0fc15fd93c83a29d350d12fdb956657b9..dcec7fb9a2264d068037aa57894ba0a3ae43231a 100644 (file)
--- a/commit.h
+++ b/commit.h
struct commit_graft *lookup_commit_graft(const unsigned char *sha1);
extern struct commit_list *get_merge_bases(struct commit *rev1, struct commit *rev2, int cleanup);
+extern struct commit_list *get_octopus_merge_bases(struct commit_list *in);
extern int register_shallow(const unsigned char *sha1);
extern int unregister_shallow(const unsigned char *sha1);