Merge branch 'mk/diff-ignore-regex'
"git diff" family of commands learned the "-I<regex>" option to ignore hunks whose changed lines all match the given pattern. * mk/diff-ignore-regex: diff: add -I<regex> that ignores matching changes merge-base, xdiff: zero out xpparam_t structures
This commit is contained in:
23
diff.c
23
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),
|
||||
|
||||
Reference in New Issue
Block a user