[PATCH 09/11] Introduce filter_independent() in commit.c

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Miklos Vajna
Date: Thursday, June 19, 2008 - 4:22 pm

This is similar to git-show-branch --independent: It filters out commits
which are reachable from any other item from the input list.

Signed-off-by: Miklos Vajna <vmiklos@frugalware.org>
---
 commit.c |   16 ++++++++++++++++
 commit.h |    1 +
 2 files changed, 17 insertions(+), 0 deletions(-)

diff --git a/commit.c b/commit.c
index 6052ca3..0dbf4b7 100644
--- a/commit.c
+++ b/commit.c
@@ -705,3 +705,19 @@ int in_merge_bases(struct commit *commit, struct commit **reference, int num)
 	free_commit_list(bases);
 	return ret;
 }
+
+struct commit_list *filter_independent(unsigned char *head,
+	struct commit_list *heads)
+{
+	struct commit_list *i, *bases, *ret = NULL;
+	struct commit_list **pptr = &ret;
+
+	commit_list_insert(lookup_commit(head), &heads);
+
+	bases = get_octopus_merge_bases(heads);
+
+	for (i = heads; i; i = i->next)
+		if (!(i->item->object.flags & RESULT))
+			pptr = &commit_list_insert(i->item, pptr)->next;
+	return ret;
+}
diff --git a/commit.h b/commit.h
index dcec7fb..0aef7e4 100644
--- a/commit.h
+++ b/commit.h
@@ -131,6 +131,7 @@ extern struct commit_list *get_shallow_commits(struct object_array *heads,
 		int depth, int shallow_flag, int not_shallow_flag);
 
 int in_merge_bases(struct commit *, struct commit **, int);
+struct commit_list *filter_independent(unsigned char *head, struct commit_list *heads);
 
 extern int interactive_add(int argc, const char **argv, const char *prefix);
 extern int rerere(void);
-- 
1.5.6

--
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
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[PATCH 00/11] Build in merge, Miklos Vajna, (Thu Jun 19, 4:22 pm)
[PATCH 01/11] Move split_cmdline() to alias.c, Miklos Vajna, (Thu Jun 19, 4:22 pm)
[PATCH 02/11] Move commit_list_count() to commit.c, Miklos Vajna, (Thu Jun 19, 4:22 pm)
[PATCH 09/11] Introduce filter_independent() in commit.c, Miklos Vajna, (Thu Jun 19, 4:22 pm)
[PATCH 10/11] Build in merge, Miklos Vajna, (Thu Jun 19, 4:22 pm)