revision traversal: prepare for commit log match.

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>
This commit is contained in:
Junio C Hamano 2006-09-17 15:43:40 -07:00
parent 83b5d2f5b0
commit 8ecae9b032
2 changed files with 17 additions and 0 deletions

View File

@ -6,6 +6,8 @@
#include "diff.h" #include "diff.h"
#include "refs.h" #include "refs.h"
#include "revision.h" #include "revision.h"
#include <regex.h>
#include "grep.h"
static char *path_name(struct name_path *path, const char *name) 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 *get_revision(struct rev_info *revs)
{ {
struct commit_list *list = revs->commits; struct commit_list *list = revs->commits;
@ -1105,6 +1116,8 @@ struct commit *get_revision(struct rev_info *revs)
if (revs->no_merges && if (revs->no_merges &&
commit->parents && commit->parents->next) commit->parents && commit->parents->next)
continue; continue;
if (!commit_match(commit, revs))
continue;
if (revs->prune_fn && revs->dense) { if (revs->prune_fn && revs->dense) {
/* Commit without changes? */ /* Commit without changes? */
if (!(commit->object.flags & TREECHANGE)) { if (!(commit->object.flags & TREECHANGE)) {

View File

@ -71,6 +71,10 @@ struct rev_info {
const char *add_signoff; const char *add_signoff;
const char *extra_headers; const char *extra_headers;
/* Filter by commit log message */
struct grep_opt *header_filter;
struct grep_opt *message_filter;
/* special limits */ /* special limits */
int max_count; int max_count;
unsigned long max_age; unsigned long max_age;