teach revision walker about --all-match.

This lets you say:

	git log --all-match --author=Linus --committer=Junio --grep=rev-list

to limit commits that was written by Linus, committed by me and
the log message contains word "rev-list".

Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Junio C Hamano 2006-09-27 17:55:58 -07:00
Родитель 0ab7befa31
Коммит 70d0afba91
1 изменённых файлов: 8 добавлений и 1 удалений

Просмотреть файл

@ -732,6 +732,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
int i, flags, seen_dashdash, show_merge;
const char **unrecognized = argv + 1;
int left = 1;
int all_match = 0;
/* First, search for "--" */
seen_dashdash = 0;
@ -967,6 +968,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
add_message_grep(revs, arg+7);
continue;
}
if (!strcmp(arg, "--all-match")) {
all_match = 1;
continue;
}
opts = diff_opt_parse(&revs->diffopt, argv+i, argc-i);
if (opts > 0) {
@ -1028,8 +1033,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
if (diff_setup_done(&revs->diffopt) < 0)
die("diff_setup_done failed");
if (revs->grep_filter)
if (revs->grep_filter) {
revs->grep_filter->all_match = all_match;
compile_grep_patterns(revs->grep_filter);
}
return left;
}