Add '--fixed-strings' option to "git log --grep" and friends
PATCH 1/1 Add '--fixed-strings' option to "git log --grep" and friends
Add support for -F | --fixed-strings option to "git log --grep" and friends: "git log --author", "git log --committer=<pattern>". Code is based on implementation of this option in "git grep".
---
This would simplify ignore-case searching for a fixed string from within gitweb, as gitweb wouldn't then have to deal with differences in quoting and unquoting (if you quote character which doesn't need quoting, would git unquote it?) between searched phrase, basic/extended regular expression as understood by git/by grep, and regular expressions in Perl (when showing matched info).
[I am not sure if the above paragtaph should be added to commit message, so it is in patch comments. Feel free to add it.]
P.S. I see that neither git-log, nor git-grep are converted to parseopt interface. What are plans for it, if any?
Documentation/git-rev-list.txt | 1 + Documentation/rev-list-options.txt | 5 +++++ revision.c | 10 +++++++++- 3 files changed, 15 insertions(+), 1 deletions(-)
Documentation/git-rev-list.txt +1 -0
@@ -31,6 +31,7 @@ SYNOPSIS [ \--(author|committer|grep)=<pattern> ] [ \--regexp-ignore-case | \-i ] [ \--extended-regexp | \-E ] + [ \--fixed-strings | \-F ] [ \--date={local|relative|default|iso|rfc|short} ] [ [\--objects | \--objects-edge] [ \--unpacked ] ] [ \--pretty | \--header ]
Documentation/rev-list-options.txt +5 -0
@@ -153,6 +153,11 @@ limiting may be applied. Consider the limiting patterns to be extended regular expressions instead of the default basic regular expressions. +-F, --fixed-strings:: + + Consider the limiting patterns to be fixed strings (don't interpret + pattern as a regular expression). + --remove-empty:: Stop when a given path disappears from the tree.
revision.c +9 -1
@@ -942,6 +942,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const chint left =1 ;int all_match =0 ;int regflags =0 ; +int fixed =0 ;/* First, search for "--" */ seen_dashdash =0 ;
@@ -1238,6 +1239,11 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch regflags |=REG_ICASE ;continue ; } +if (!strcmp (arg,"--fixed-strings" ) || + !strcmp (arg,"-F" )) { + fixed =1 ; +continue ; + }if (!strcmp (arg,"--all-match" )) { all_match =1 ;continue ;
@@ -1293,8 +1299,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch } } -if (revs->grep_filter) +if (revs->grep_filter) { revs->grep_filter->regflags |= regflags; + revs->grep_filter->fixed = fixed; + }if (show_merge)prepare_show_merge (revs);
Signature · 1 line
1.5.4.2