grep.c: teach 'git grep --only-matching'
[gitweb.git] / builtin / grep.c
index 61bcaf6e58d67c8bc66f6d8d260e91e7804caa5b..228b83990f990e8cd6f2a6bcbe05df0955921eda 100644 (file)
@@ -843,6 +843,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
                OPT_BOOL_F('z', "null", &opt.null_following_name,
                           N_("print NUL after filenames"),
                           PARSE_OPT_NOCOMPLETE),
+               OPT_BOOL('o', "only-matching", &opt.only_matching,
+                       N_("show only matching parts of a line")),
                OPT_BOOL('c', "count", &opt.count,
                        N_("show the number of matches instead of matching lines")),
                OPT__COLOR(&opt.color, N_("highlight matches")),
@@ -962,6 +964,10 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
        if (!opt.pattern_list)
                die(_("no pattern given."));
 
+       /* --only-matching has no effect with --invert. */
+       if (opt.invert)
+               opt.only_matching = 0;
+
        /*
         * We have to find "--" in a separate pass, because its presence
         * influences how we will parse arguments that come before it.