diff-merges: new function diff_merges_set_dense_combined_if_unset()

Call it where given functionality is needed instead of direct checking/tweaking of diff merges related fields. 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 3b6c17b5c0bd126e3c712f5de909a033d99f1e3a
4 files changed +24 -8
builtin/diff-files.c
+3 -2
@@ -7,6 +7,7 @@
7 #include "cache.h"
8 #include "config.h"
9 #include "diff.h"
10 +#include "diff-merges.h"
11 #include "commit.h"
12 #include "revision.h"
13 #include "builtin.h"
@@ -69,9 +70,9 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
70 * was not asked to. "diff-files -c -p" should not densify
71 * (the user should ask with "diff-files --cc" explicitly).
72 */
72 - if (rev.max_count == -1 && !rev.combine_merges &&
73 + if (rev.max_count == -1 &&
74 (rev.diffopt.output_format & DIFF_FORMAT_PATCH))
74 - rev.combine_merges = rev.dense_combined_merges = 1;
75 + diff_merges_set_dense_combined_if_unset(&rev);
76
77 if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
78 perror("read_cache_preload");
builtin/diff.c
+5 -4
@@ -13,6 +13,7 @@
13 #include "blob.h"
14 #include "tag.h"
15 #include "diff.h"
16 +#include "diff-merges.h"
17 #include "diffcore.h"
18 #include "revision.h"
19 #include "log-tree.h"
@@ -199,8 +200,8 @@ static int builtin_diff_combined(struct rev_info *revs,
200 if (argc > 1)
201 usage(builtin_diff_usage);
202
202 - if (!revs->dense_combined_merges && !revs->combine_merges)
203 - revs->dense_combined_merges = revs->combine_merges = 1;
203 + diff_merges_set_dense_combined_if_unset(revs);
204 +
205 for (i = 1; i < ents; i++)
206 oid_array_append(&parents, &ent[i].item->oid);
207 diff_tree_combined(&ent[0].item->oid, &parents, revs);
@@ -248,9 +249,9 @@ static int builtin_diff_files(struct rev_info *revs, int argc, const char **argv
249 * dense one, --cc can be explicitly asked for, or just rely
250 * on the default).
251 */
251 - if (revs->max_count == -1 && !revs->combine_merges &&
252 + if (revs->max_count == -1 &&
253 (revs->diffopt.output_format & DIFF_FORMAT_PATCH))
253 - revs->combine_merges = revs->dense_combined_merges = 1;
254 + diff_merges_set_dense_combined_if_unset(revs);
255
256 setup_work_tree();
257 if (read_cache_preload(&revs->diffopt.pathspec) < 0) {
diff-merges.c
+14 -2
@@ -10,6 +10,13 @@ static void suppress(struct rev_info *revs)
10 revs->dense_combined_merges = 0;
11 }
12
13 +static void set_dense_combined(struct rev_info *revs)
14 +{
15 + revs->combine_merges = 1;
16 + revs->dense_combined_merges = 1;
17 +}
18 +
19 +
20 /*
21 * Public functions. They are in the order they are called.
22 */
@@ -39,8 +46,7 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
46 revs->combine_merges = 1;
47 } else if (!strcmp(arg, "--cc")) {
48 revs->diff = 1;
42 - revs->dense_combined_merges = 1;
43 - revs->combine_merges = 1;
49 + set_dense_combined(revs);
50 } else if (!strcmp(arg, "--no-diff-merges")) {
51 suppress(revs);
52 } else if (!strcmp(arg, "--combined-all-paths")) {
@@ -80,6 +86,12 @@ void diff_merges_default_to_dense_combined(struct rev_info *revs)
86 }
87 }
88
89 +void diff_merges_set_dense_combined_if_unset(struct rev_info *revs)
90 +{
91 + if (!revs->combine_merges)
92 + set_dense_combined(revs);
93 +}
94 +
95 void diff_merges_setup_revs(struct rev_info *revs)
96 {
97 if (revs->combine_merges && revs->ignore_merges < 0)
diff-merges.h
+2
@@ -19,6 +19,8 @@ void diff_merges_default_to_first_parent(struct rev_info *revs);
19
20 void diff_merges_default_to_dense_combined(struct rev_info *revs);
21
22 +void diff_merges_set_dense_combined_if_unset(struct rev_info *revs);
23 +
24 void diff_merges_setup_revs(struct rev_info *revs);
25
26 #endif