git-rev-list: Add regexp tuning options

This patch introduces --extended-regexp and --regexp-ignore-case options to
tune what kind of patterns the pattern-limiting options (--grep, --author,
...) accept.

Signed-off-by: Petr Baudis <pasky@suse.cz>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Petr Baudis
2007-05-19 02:13:29 +02:00
committed by Junio C Hamano
parent 77e4e8bd9b
commit 93d496a560
2 changed files with 22 additions and 0 deletions

View File

@ -25,6 +25,7 @@ SYNOPSIS
[ \--cherry-pick ] [ \--cherry-pick ]
[ \--encoding[=<encoding>] ] [ \--encoding[=<encoding>] ]
[ \--(author|committer|grep)=<pattern> ] [ \--(author|committer|grep)=<pattern> ]
[ \--regexp-ignore-case ] [ \--extended-regexp ]
[ \--date={local|relative|default} ] [ \--date={local|relative|default} ]
[ [\--objects | \--objects-edge] [ \--unpacked ] ] [ [\--objects | \--objects-edge] [ \--unpacked ] ]
[ \--pretty | \--header ] [ \--pretty | \--header ]
@ -214,6 +215,15 @@ limiting may be applied.
Limit the commits output to ones with log message that Limit the commits output to ones with log message that
matches the specified pattern (regular expression). matches the specified pattern (regular expression).
--regexp-ignore-case::
Match the regexp limiting patterns without regard to letters case.
--extended-regexp::
Consider the limiting patterns to be extended regular expressions
instead of the default basic regular expressions.
--remove-empty:: --remove-empty::
Stop when a given path disappears from the tree. Stop when a given path disappears from the tree.

View File

@ -881,6 +881,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
const char **unrecognized = argv + 1; const char **unrecognized = argv + 1;
int left = 1; int left = 1;
int all_match = 0; int all_match = 0;
int regflags = 0;
/* First, search for "--" */ /* First, search for "--" */
seen_dashdash = 0; seen_dashdash = 0;
@ -1152,6 +1153,14 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
add_message_grep(revs, arg+7); add_message_grep(revs, arg+7);
continue; continue;
} }
if (!prefixcmp(arg, "--extended-regexp")) {
regflags |= REG_EXTENDED;
continue;
}
if (!prefixcmp(arg, "--regexp-ignore-case")) {
regflags |= REG_ICASE;
continue;
}
if (!strcmp(arg, "--all-match")) { if (!strcmp(arg, "--all-match")) {
all_match = 1; all_match = 1;
continue; continue;
@ -1200,6 +1209,9 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
} }
} }
if (revs->grep_filter)
revs->grep_filter->regflags |= regflags;
if (show_merge) if (show_merge)
prepare_show_merge(revs); prepare_show_merge(revs);
if (def && !revs->pending.nr) { if (def && !revs->pending.nr) {