diff-merges: revise revs->diff flag handling

Do not set revs->diff when we encounter an option that needs it, as it'd be impossible to undo later. Besides, some other options than what we handle here set this flag as well, and we'd interfere with them trying to clear this flag later. Rather set revs->diff, if finally needed, in diff_merges_setup_revs(). As an additional bonus, this also makes our code shorter. Signed-off-by: Sergey Organov <sorganov@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sergey Organov committed Dec 21, 2020 at 18:19 UTC e121b4b822765336cd4710ec9f8aed77d25de3fe
1 file changed +1 -3
diff-merges.c
+1 -3
@@ -41,16 +41,13 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
41 revs->ignore_merges = 0;
42 revs->match_missing = 1;
43 } else if (!strcmp(arg, "-c")) {
44 - revs->diff = 1;
44 revs->dense_combined_merges = 0;
45 revs->combine_merges = 1;
46 } else if (!strcmp(arg, "--cc")) {
48 - revs->diff = 1;
47 set_dense_combined(revs);
48 } else if (!strcmp(arg, "--no-diff-merges")) {
49 suppress(revs);
50 } else if (!strcmp(arg, "--combined-all-paths")) {
53 - revs->diff = 1;
51 revs->combined_all_paths = 1;
52 } else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) {
53 if (!strcmp(optarg, "off")) {
@@ -103,6 +100,7 @@ void diff_merges_setup_revs(struct rev_info *revs)
100 if (revs->combined_all_paths && !revs->combine_merges)
101 die("--combined-all-paths makes no sense without -c or --cc");
102 if (revs->combine_merges) {
103 + revs->diff = 1;
104 /* Turn --cc/-c into -p --cc/-c when -p was not given */
105 if (!revs->diffopt.output_format)
106 revs->diffopt.output_format = DIFF_FORMAT_PATCH;