diff options
author | Junio C Hamano <gitster@pobox.com> | 2020-09-09 23:53:07 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-09-09 23:53:07 +0300 |
commit | c1ce30d364e2161c558466cf938ca71fb456f6c3 (patch) | |
tree | 3c90f4d0dcbe0975240c072b02a7a0be63ec6d9d | |
parent | eb7460fd312511941d64007b5dfc4799a20a8d18 (diff) | |
parent | 572fc9aa5471ce7a9888f03a32d556350f88a5cf (diff) |
Merge branch 'so/separate-field-for-m-and-diff-merges'
Internal API clean-up to handle two options "diff-index" and "log"
have, which happen to share the same short form, more sensibly.
* so/separate-field-for-m-and-diff-merges:
revision: add separate field for "-m" of "diff-index -m"
-rw-r--r-- | diff-lib.c | 10 | ||||
-rw-r--r-- | revision.c | 6 | ||||
-rw-r--r-- | revision.h | 1 |
3 files changed, 9 insertions, 8 deletions
diff --git a/diff-lib.c b/diff-lib.c index 50521e2093..5d5d3dafab 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -405,14 +405,8 @@ static void do_oneway_diff(struct unpack_trees_options *o, /* if the entry is not checked out, don't examine work tree */ cached = o->index_only || (idx && ((idx->ce_flags & CE_VALID) || ce_skip_worktree(idx))); - /* - * Backward compatibility wart - "diff-index -m" does - * not mean "do not ignore merges", but "match_missing". - * - * But with the revision flag parsing, that's found in - * "!revs->ignore_merges". - */ - match_missing = !revs->ignore_merges; + + match_missing = revs->match_missing; if (cached && idx && ce_stage(idx)) { struct diff_filepair *pair; diff --git a/revision.c b/revision.c index 08c2ad23af..0d67b842fd 100644 --- a/revision.c +++ b/revision.c @@ -2352,7 +2352,13 @@ static int handle_revision_opt(struct rev_info *revs, int argc, const char **arg revs->diffopt.flags.recursive = 1; revs->diffopt.flags.tree_in_recursive = 1; } else if (!strcmp(arg, "-m")) { + /* + * To "diff-index", "-m" means "match missing", and to the "log" + * family of commands, it means "show full diff for merges". Set + * both fields appropriately. + */ revs->ignore_merges = 0; + revs->match_missing = 1; } else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) { if (!strcmp(optarg, "off")) { revs->ignore_merges = 1; diff --git a/revision.h b/revision.h index c1e5bcf139..f6bf860d19 100644 --- a/revision.h +++ b/revision.h @@ -188,6 +188,7 @@ struct rev_info { unsigned int diff:1, full_diff:1, show_root_diff:1, + match_missing:1, no_commit_id:1, verbose_header:1, combine_merges:1, |