Re: git log filtering
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Feb 7, 2007, 17:25 UTC
- Message-ID
- <Pine.LNX.4.63.0702071822430.22628@wbgn013.biozentrum.uni-wuerzburg.de>
- In-Reply-To
- <Pine.LNX.4.64.0702070856190.8424@woody.linux-foundation.org>
Hi,
On Wed, 7 Feb 2007, Linus Torvalds wrote:
Show 9 quoted lines
> You can do > > git log --grep="Signed-off-by:.*akpm" > > on the kernel archive to see which ones were signed off by Andrew. > > So the above works, and catches *most* uses. But it has problems if you > want to do something fancier (and I think that includes something as > simple as doing a case-insensitive grep).
[TIC PATCH] revision.c: accept "-i" to make --grep case insensitive
When calling
git log --grep=blabla -i --grep=blublu
the expression "blabla" is greppend case _sensitively_, but "blublu" case _insensitively_.
Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
revision.c | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/revision.c b/revision.c index 42ba310..843aa8e 100644 --- a/revision.c +++ b/revision.c @@ -9,6 +9,8 @@ #include "grep.h" #include "reflog-walk.h" +static int case_insensitive_grep = 0; + static char *path_name(struct name_path *path, const char *name) { struct name_path *p; @@ -742,6 +744,8 @@ static void add_grep(struct rev_info *revs, const char *ptn, enum grep_pat_token opt->status_only = 1; opt->pattern_tail = &(opt->pattern_list); opt->regflags = REG_NEWLINE; + if (case_insensitive_grep) + opt->regflags |= REG_ICASE; revs->grep_filter = opt; } append_grep_pattern(revs->grep_filter, ptn, @@ -1042,6 +1046,11 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch add_header_grep(revs, "committer", arg+12); continue; } + if (!strcmp(arg, "-i") || + !strcmp(arg, "--case-insensitive")) { + case_insensitive_grep = 1; + continue; + } if (!strncmp(arg, "--grep=", 7)) { add_message_grep(revs, arg+7); continue;