diff options
| author | Junio C Hamano <gitster@pobox.com> | 2012-09-13 14:21:44 -0700 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2012-09-14 10:10:35 -0700 | 
| commit | 17bf35a3c7b46df7131681bcc5bee5f12e1caec4 (patch) | |
| tree | 26c22e3e4dce563d22a840d6a9b2f144a2335b57 /revision.c | |
| parent | 785ee4960c3d334cbc2b17ab74d2cebdf1b4db64 (diff) | |
| download | git-17bf35a3c7b46df7131681bcc5bee5f12e1caec4.tar.gz | |
grep: teach --debug option to dump the parse tree
Our "grep" allows complex boolean expressions to be formed to match
each individual line with operators like --and, '(', ')' and --not.
Introduce the "--debug" option to show the parse tree to help people
who want to debug and enhance it.
Also "log" learns "--grep-debug" option to do the same.  The command
line parser to the log family is a lot more limited than the general
"git grep" parser, but it has special handling for header matching
(e.g. "--author"), and a parse tree is valuable when working on it.
Note that "--all-match" is *not* any individual node in the parse
tree.  It is an instruction to the evaluator to check all the nodes
in the top-level backbone have matched and reject a document as
non-matching otherwise.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'revision.c')
| -rw-r--r-- | revision.c | 2 | 
1 files changed, 2 insertions, 0 deletions
| diff --git a/revision.c b/revision.c index 9a0d9c7de2..90376e8e19 100644 --- a/revision.c +++ b/revision.c @@ -1578,6 +1578,8 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg  	} else if ((argcount = parse_long_opt("grep", argv, &optarg))) {  		add_message_grep(revs, optarg);  		return argcount; +	} else if (!strcmp(arg, "--grep-debug")) { +		revs->grep_filter.debug = 1;  	} else if (!strcmp(arg, "--extended-regexp") || !strcmp(arg, "-E")) {  		revs->grep_filter.regflags |= REG_EXTENDED;  	} else if (!strcmp(arg, "--regexp-ignore-case") || !strcmp(arg, "-i")) { | 
