]> git.ipfire.org Git - thirdparty/git.git/blobdiff - diff.c
Merge branch 'jk/checkout-index-errors'
[thirdparty/git.git] / diff.c
diff --git a/diff.c b/diff.c
index 2bb2f8f57e8b7ce5a6d861b7a1d598a7fbaf68e9..d24f47df993ead73df360571a6ad9cbac604287f 100644 (file)
--- a/diff.c
+++ b/diff.c
@@ -3587,6 +3587,8 @@ static void builtin_diff(const char *name_a,
                if (header.len && !o->flags.suppress_diff_headers)
                        ecbdata.header = &header;
                xpp.flags = o->xdl_opts;
+               xpp.ignore_regex = o->ignore_regex;
+               xpp.ignore_regex_nr = o->ignore_regex_nr;
                xpp.anchors = o->anchors;
                xpp.anchors_nr = o->anchors_nr;
                xecfg.ctxlen = o->context;
@@ -3716,6 +3718,8 @@ static void builtin_diffstat(const char *name_a, const char *name_b,
                memset(&xpp, 0, sizeof(xpp));
                memset(&xecfg, 0, sizeof(xecfg));
                xpp.flags = o->xdl_opts;
+               xpp.ignore_regex = o->ignore_regex;
+               xpp.ignore_regex_nr = o->ignore_regex_nr;
                xpp.anchors = o->anchors;
                xpp.anchors_nr = o->anchors_nr;
                xecfg.ctxlen = o->context;
@@ -5203,6 +5207,22 @@ static int diff_opt_patience(const struct option *opt,
        return 0;
 }
 
+static int diff_opt_ignore_regex(const struct option *opt,
+                                const char *arg, int unset)
+{
+       struct diff_options *options = opt->value;
+       regex_t *regex;
+
+       BUG_ON_OPT_NEG(unset);
+       regex = xmalloc(sizeof(*regex));
+       if (regcomp(regex, arg, REG_EXTENDED | REG_NEWLINE))
+               return error(_("invalid regex given to -I: '%s'"), arg);
+       ALLOC_GROW(options->ignore_regex, options->ignore_regex_nr + 1,
+                  options->ignore_regex_alloc);
+       options->ignore_regex[options->ignore_regex_nr++] = regex;
+       return 0;
+}
+
 static int diff_opt_pickaxe_regex(const struct option *opt,
                                  const char *arg, int unset)
 {
@@ -5491,6 +5511,9 @@ static void prep_parse_options(struct diff_options *options)
                OPT_BIT_F(0, "ignore-blank-lines", &options->xdl_opts,
                          N_("ignore changes whose lines are all blank"),
                          XDF_IGNORE_BLANK_LINES, PARSE_OPT_NONEG),
+               OPT_CALLBACK_F('I', "ignore-matching-lines", options, N_("<regex>"),
+                              N_("ignore changes whose all lines match <regex>"),
+                              0, diff_opt_ignore_regex),
                OPT_BIT(0, "indent-heuristic", &options->xdl_opts,
                        N_("heuristic to shift diff hunk boundaries for easy reading"),
                        XDF_INDENT_HEURISTIC),