diff-merges: new function diff_merges_set_dense_combined_if_unset()
authorSergey Organov <redacted>
Mon, 21 Dec 2020 15:19:39 +0000 (18:19 +0300)
committerJunio C Hamano <redacted>
Mon, 21 Dec 2020 21:47:31 +0000 (13:47 -0800)
Call it where given functionality is needed instead of direct
checking/tweaking of diff merges related fields.

Signed-off-by: Sergey Organov <redacted>
Signed-off-by: Junio C Hamano <redacted>
builtin/diff-files.c
builtin/diff.c
diff-merges.c
diff-merges.h

index 1e352dd8f77c281e41d702af81378cc9e213aaad..4742a4559b21beb38092e9e35c7f8c2e951455be 100644 (file)
@@ -7,6 +7,7 @@
 #include "cache.h"
 #include "config.h"
 #include "diff.h"
+#include "diff-merges.h"
 #include "commit.h"
 #include "revision.h"
 #include "builtin.h"
@@ -69,9 +70,9 @@ int cmd_diff_files(int argc, const char **argv, const char *prefix)
         * was not asked to.  "diff-files -c -p" should not densify
         * (the user should ask with "diff-files --cc" explicitly).
         */
-       if (rev.max_count == -1 && !rev.combine_merges &&
+       if (rev.max_count == -1 &&
            (rev.diffopt.output_format & DIFF_FORMAT_PATCH))
-               rev.combine_merges = rev.dense_combined_merges = 1;
+               diff_merges_set_dense_combined_if_unset(&rev);
 
        if (read_cache_preload(&rev.diffopt.pathspec) < 0) {
                perror("read_cache_preload");
index cd4083fed96ecda432cf166ba12cfaf58b4b609b..2f570a3131cbd9773dfce39fab099d66c21cd394 100644 (file)
@@ -13,6 +13,7 @@
 #include "blob.h"
 #include "tag.h"
 #include "diff.h"
+#include "diff-merges.h"
 #include "diffcore.h"
 #include "revision.h"
 #include "log-tree.h"
@@ -199,8 +200,8 @@ static int builtin_diff_combined(struct rev_info *revs,
        if (argc > 1)
                usage(builtin_diff_usage);
 
-       if (!revs->dense_combined_merges && !revs->combine_merges)
-               revs->dense_combined_merges = revs->combine_merges = 1;
+       diff_merges_set_dense_combined_if_unset(revs);
+
        for (i = 1; i < ents; i++)
                oid_array_append(&parents, &ent[i].item->oid);
        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
         * dense one, --cc can be explicitly asked for, or just rely
         * on the default).
         */
-       if (revs->max_count == -1 && !revs->combine_merges &&
+       if (revs->max_count == -1 &&
            (revs->diffopt.output_format & DIFF_FORMAT_PATCH))
-               revs->combine_merges = revs->dense_combined_merges = 1;
+               diff_merges_set_dense_combined_if_unset(revs);
 
        setup_work_tree();
        if (read_cache_preload(&revs->diffopt.pathspec) < 0) {
index 23e6cb11d1adc68ae881f3326028adc4c26a23cc..24f922cf8a0f9dc24e40f2deba7651004e28f2df 100644 (file)
@@ -10,6 +10,13 @@ static void suppress(struct rev_info *revs)
        revs->dense_combined_merges = 0;
 }
 
+static void set_dense_combined(struct rev_info *revs)
+{
+       revs->combine_merges = 1;
+       revs->dense_combined_merges = 1;
+}
+
+
 /*
  * Public functions. They are in the order they are called.
  */
@@ -39,8 +46,7 @@ int diff_merges_parse_opts(struct rev_info *revs, const char **argv)
                revs->combine_merges = 1;
        } else if (!strcmp(arg, "--cc")) {
                revs->diff = 1;
-               revs->dense_combined_merges = 1;
-               revs->combine_merges = 1;
+               set_dense_combined(revs);
        } else if (!strcmp(arg, "--no-diff-merges")) {
                suppress(revs);
        } else if (!strcmp(arg, "--combined-all-paths")) {
@@ -80,6 +86,12 @@ void diff_merges_default_to_dense_combined(struct rev_info *revs)
        }
 }
 
+void diff_merges_set_dense_combined_if_unset(struct rev_info *revs)
+{
+       if (!revs->combine_merges)
+               set_dense_combined(revs);
+}
+
 void diff_merges_setup_revs(struct rev_info *revs)
 {
        if (revs->combine_merges && revs->ignore_merges < 0)
index a031240576f7967d83fcad0a9963b0605987be56..f92de137d3a0be0370a09892cb30086b27629a18 100644 (file)
@@ -19,6 +19,8 @@ void diff_merges_default_to_first_parent(struct rev_info *revs);
 
 void diff_merges_default_to_dense_combined(struct rev_info *revs);
 
+void diff_merges_set_dense_combined_if_unset(struct rev_info *revs);
+
 void diff_merges_setup_revs(struct rev_info *revs);
 
 #endif
git clone https://git.99rst.org/PROJECT