diff-merges: cleanup set_diff_merges()

Get rid of special-casing of 'suppress' in set_diff_merges(). Instead set 'merges_need_diff' flag correctly in every option handling function. Signed-off-by: Sergey Organov <sorganov@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Sergey Organov committed Sep 14, 2022 at 22:31 UTC 563005ecbf552b1be5f632a049ed6cd4fd6aa4e2
1 file changed +19 -11
diff-merges.c
+19 -11
@@ -20,9 +20,20 @@ static void suppress(struct rev_info *revs)
20 revs->remerge_diff = 0;
21 }
22
23 -static void set_separate(struct rev_info *revs)
23 +static void common_setup(struct rev_info *revs)
24 {
25 suppress(revs);
26 + revs->merges_need_diff = 1;
27 +}
28 +
29 +static void set_none(struct rev_info *revs)
30 +{
31 + suppress(revs);
32 +}
33 +
34 +static void set_separate(struct rev_info *revs)
35 +{
36 + common_setup(revs);
37 revs->separate_merges = 1;
38 revs->simplify_history = 0;
39 }
@@ -35,21 +46,21 @@ static void set_first_parent(struct rev_info *revs)
46
47 static void set_combined(struct rev_info *revs)
48 {
38 - suppress(revs);
49 + common_setup(revs);
50 revs->combine_merges = 1;
51 revs->dense_combined_merges = 0;
52 }
53
54 static void set_dense_combined(struct rev_info *revs)
55 {
45 - suppress(revs);
56 + common_setup(revs);
57 revs->combine_merges = 1;
58 revs->dense_combined_merges = 1;
59 }
60
61 static void set_remerge_diff(struct rev_info *revs)
62 {
52 - suppress(revs);
63 + common_setup(revs);
64 revs->remerge_diff = 1;
65 revs->simplify_history = 0;
66 }
@@ -57,7 +68,7 @@ static void set_remerge_diff(struct rev_info *revs)
68 static diff_merges_setup_func_t func_by_opt(const char *optarg)
69 {
70 if (!strcmp(optarg, "off") || !strcmp(optarg, "none"))
60 - return suppress;
71 + return set_none;
72 if (!strcmp(optarg, "1") || !strcmp(optarg, "first-parent"))
73 return set_first_parent;
74 if (!strcmp(optarg, "separate"))
@@ -81,10 +92,6 @@ static void set_diff_merges(struct rev_info *revs, const char *optarg)
92 die(_("invalid value for '%s': '%s'"), "--diff-merges", optarg);
93
94 func(revs);
84 -
85 - /* NOTE: the merges_need_diff flag is cleared by func() call */
86 - if (func != suppress)
87 - revs->merges_need_diff = 1;
95 }
96
97 /*
@@ -115,6 +122,7 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
122
123 if (!suppress_m_parsing && !strcmp(arg, "-m")) {
124 set_to_default(revs);
125 + revs->merges_need_diff = 0;
126 } else if (!strcmp(arg, "-c")) {
127 set_combined(revs);
128 revs->merges_imply_patch = 1;
@@ -125,7 +133,7 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
133 set_remerge_diff(revs);
134 revs->merges_imply_patch = 1;
135 } else if (!strcmp(arg, "--no-diff-merges")) {
128 - suppress(revs);
136 + set_none(revs);
137 } else if (!strcmp(arg, "--combined-all-paths")) {
138 revs->combined_all_paths = 1;
139 } else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) {
@@ -139,7 +147,7 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
147
148 void diff_merges_suppress(struct rev_info *revs)
149 {
142 - suppress(revs);
150 + set_none(revs);
151 }
152
153 void diff_merges_default_to_first_parent(struct rev_info *revs)