revision traversal: prepare for commit log match.
authorJunio C Hamano <junkio@cox.net>
Sun, 17 Sep 2006 22:43:40 +0000 (15:43 -0700)
committerJunio C Hamano <junkio@cox.net>
Wed, 20 Sep 2006 18:14:39 +0000 (11:14 -0700)
This is from a suggestion by Linus, just to mark the locations where we
need to modify to actually implement the filtering.

We do not have any actual filtering code yet.

Signed-off-by: Junio C Hamano <junkio@cox.net>
revision.c
revision.h

index 6a2539b..a14457a 100644 (file)
@@ -6,6 +6,8 @@
 #include "diff.h"
 #include "refs.h"
 #include "revision.h"
+#include <regex.h>
+#include "grep.h"
 
 static char *path_name(struct name_path *path, const char *name)
 {
@@ -1045,6 +1047,15 @@ static void mark_boundary_to_show(struct commit *commit)
        }
 }
 
+static int commit_match(struct commit *commit, struct rev_info *opt)
+{
+       if (!opt->header_filter && !opt->message_filter)
+               return 1;
+
+       /* match it here */
+       return 1;
+}
+
 struct commit *get_revision(struct rev_info *revs)
 {
        struct commit_list *list = revs->commits;
@@ -1105,6 +1116,8 @@ struct commit *get_revision(struct rev_info *revs)
                if (revs->no_merges &&
                    commit->parents && commit->parents->next)
                        continue;
+               if (!commit_match(commit, revs))
+                       continue;
                if (revs->prune_fn && revs->dense) {
                        /* Commit without changes? */
                        if (!(commit->object.flags & TREECHANGE)) {
index a5c35d0..60030e5 100644 (file)
@@ -71,6 +71,10 @@ struct rev_info {
        const char      *add_signoff;
        const char      *extra_headers;
 
+       /* Filter by commit log message */
+       struct grep_opt *header_filter;
+       struct grep_opt *message_filter;
+
        /* special limits */
        int max_count;
        unsigned long max_age;