]> git.ipfire.org Git - thirdparty/git.git/commitdiff
revision: move diff merges functions to its own diff-merges.c
authorSergey Organov <sorganov@gmail.com>
Mon, 21 Dec 2020 15:19:33 +0000 (18:19 +0300)
committerJunio C Hamano <gitster@pobox.com>
Mon, 21 Dec 2020 21:47:30 +0000 (13:47 -0800)
Create separate diff-merges.c and diff-merges.h files, and move all
the code related to handling of diff merges there.

Signed-off-by: Sergey Organov <sorganov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Makefile
builtin/log.c
diff-merges.c [new file with mode: 0644]
diff-merges.h [new file with mode: 0644]
revision.c
revision.h

index b84e182688eeca3c43c1ebfabf1b915e451a62ee..efcd63fe6e90ffd495ea90d2a513c4123ef972dd 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -872,6 +872,7 @@ LIB_OBJS += date.o
 LIB_OBJS += decorate.o
 LIB_OBJS += delta-islands.o
 LIB_OBJS += diff-delta.o
+LIB_OBJS += diff-merges.o
 LIB_OBJS += diff-lib.o
 LIB_OBJS += diff-no-index.o
 LIB_OBJS += diff.o
index 717855a49e908b65bb95479ac553cc195f294e20..ad3092fdd85402bb02692508b1394c452dbf2452 100644 (file)
@@ -12,6 +12,7 @@
 #include "color.h"
 #include "commit.h"
 #include "diff.h"
+#include "diff-merges.h"
 #include "revision.h"
 #include "log-tree.h"
 #include "builtin.h"
diff --git a/diff-merges.c b/diff-merges.c
new file mode 100644 (file)
index 0000000..0204292
--- /dev/null
@@ -0,0 +1,76 @@
+#include "diff-merges.h"
+
+#include "revision.h"
+
+void init_diff_merge_revs(struct rev_info *revs)
+{
+       revs->ignore_merges = -1;
+}
+
+int parse_diff_merge_opts(struct rev_info *revs, const char **argv)
+{
+       int argcount = 1;
+       const char *optarg;
+       const char *arg = argv[0];
+
+       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 (!strcmp(arg, "-c")) {
+               revs->diff = 1;
+               revs->dense_combined_merges = 0;
+               revs->combine_merges = 1;
+       } else if (!strcmp(arg, "--cc")) {
+               revs->diff = 1;
+               revs->dense_combined_merges = 1;
+               revs->combine_merges = 1;
+       } else if (!strcmp(arg, "--no-diff-merges")) {
+               revs->ignore_merges = 1;
+       } else if (!strcmp(arg, "--combined-all-paths")) {
+               revs->diff = 1;
+               revs->combined_all_paths = 1;
+       } else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) {
+               if (!strcmp(optarg, "off")) {
+                       revs->ignore_merges = 1;
+               } else {
+                       die(_("unknown value for --diff-merges: %s"), optarg);
+               }
+       } else
+               argcount = 0;
+
+       return argcount;
+}
+
+void setup_diff_merges_revs(struct rev_info *revs)
+{
+       if (revs->combine_merges && revs->ignore_merges < 0)
+               revs->ignore_merges = 0;
+       if (revs->ignore_merges < 0)
+               revs->ignore_merges = 1;
+       if (revs->combined_all_paths && !revs->combine_merges)
+               die("--combined-all-paths makes no sense without -c or --cc");
+}
+
+void rev_diff_merges_first_parent_defaults_to_enable(struct rev_info *revs)
+{
+       if (revs->first_parent_only && revs->ignore_merges < 0)
+               revs->ignore_merges = 0;
+}
+
+void rev_diff_merges_default_to_dense_combined(struct rev_info *revs)
+{
+       if (revs->ignore_merges < 0) {
+               /* There was no "-m" variant on the command line */
+               revs->ignore_merges = 0;
+               if (!revs->first_parent_only && !revs->combine_merges) {
+                       /* No "--first-parent", "-c", or "--cc" */
+                       revs->combine_merges = 1;
+                       revs->dense_combined_merges = 1;
+               }
+       }
+}
diff --git a/diff-merges.h b/diff-merges.h
new file mode 100644 (file)
index 0000000..7e970b2
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef DIFF_MERGES_H
+#define DIFF_MERGES_H
+
+/*
+ * diff-merges - utility module to handle command-line options for
+ * selection of particular diff format of merge commits
+ * representation.
+ */
+
+struct rev_info;
+
+void init_diff_merge_revs(struct rev_info *revs);
+int parse_diff_merge_opts(struct rev_info *revs, const char **argv);
+void setup_diff_merges_revs(struct rev_info *revs);
+void rev_diff_merges_default_to_dense_combined(struct rev_info *revs);
+void rev_diff_merges_first_parent_defaults_to_enable(struct rev_info *revs);
+
+#endif
index 1c224d276474fd95fcae814ef1a3c936e1115ee1..4bc14a08a62441c3243357754a62ee43be78cd5a 100644 (file)
@@ -5,6 +5,7 @@
 #include "tree.h"
 #include "commit.h"
 #include "diff.h"
+#include "diff-merges.h"
 #include "refs.h"
 #include "revision.h"
 #include "repository.h"
@@ -1805,8 +1806,6 @@ static int add_parents_only(struct rev_info *revs, const char *arg_, int flags,
        return 1;
 }
 
-static void init_diff_merge_revs(struct rev_info *revs);
-
 void repo_init_revisions(struct repository *r,
                         struct rev_info *revs,
                         const char *prefix)
@@ -2155,79 +2154,6 @@ static void add_message_grep(struct rev_info *revs, const char *pattern)
        add_grep(revs, pattern, GREP_PATTERN_BODY);
 }
 
-static void init_diff_merge_revs(struct rev_info *revs)
-{
-       revs->ignore_merges = -1;
-}
-
-static int parse_diff_merge_opts(struct rev_info *revs, const char **argv)
-{
-       int argcount = 1;
-       const char *optarg;
-       const char *arg = argv[0];
-
-       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 (!strcmp(arg, "-c")) {
-               revs->diff = 1;
-               revs->dense_combined_merges = 0;
-               revs->combine_merges = 1;
-       } else if (!strcmp(arg, "--cc")) {
-               revs->diff = 1;
-               revs->dense_combined_merges = 1;
-               revs->combine_merges = 1;
-       } else if (!strcmp(arg, "--no-diff-merges")) {
-               revs->ignore_merges = 1;
-       } else if (!strcmp(arg, "--combined-all-paths")) {
-               revs->diff = 1;
-               revs->combined_all_paths = 1;
-       } else if ((argcount = parse_long_opt("diff-merges", argv, &optarg))) {
-               if (!strcmp(optarg, "off")) {
-                       revs->ignore_merges = 1;
-               } else {
-                       die(_("unknown value for --diff-merges: %s"), optarg);
-               }
-       } else
-               argcount = 0;
-
-       return argcount;
-}
-
-static void setup_diff_merges_revs(struct rev_info *revs)
-{
-       if (revs->combine_merges && revs->ignore_merges < 0)
-               revs->ignore_merges = 0;
-       if (revs->ignore_merges < 0)
-               revs->ignore_merges = 1;
-       if (revs->combined_all_paths && !revs->combine_merges)
-               die("--combined-all-paths makes no sense without -c or --cc");
-}
-
-void rev_diff_merges_first_parent_defaults_to_enable(struct rev_info *revs)
-{
-       if (revs->first_parent_only && revs->ignore_merges < 0)
-               revs->ignore_merges = 0;
-}
-
-void rev_diff_merges_default_to_dense_combined(struct rev_info *revs)
-{
-       if (revs->ignore_merges < 0) {
-               /* There was no "-m" variant on the command line */
-               revs->ignore_merges = 0;
-               if (!revs->first_parent_only && !revs->combine_merges) {
-                       /* No "--first-parent", "-c", or "--cc" */
-                       revs->combine_merges = 1;
-                       revs->dense_combined_merges = 1;
-               }
-       }
-}
-
 static int handle_revision_opt(struct rev_info *revs, int argc, const char **argv,
                               int *unkc, const char **unkv,
                               const struct setup_revision_opt* opt)
index 3dd0229f4edc19abeb26a50bbd70c4f49f0fcd44..f6bf860d19e5a2997193c25873a5ba82e030f68b 100644 (file)
@@ -456,7 +456,4 @@ int rewrite_parents(struct rev_info *revs,
  */
 struct commit_list *get_saved_parents(struct rev_info *revs, const struct commit *commit);
 
-void rev_diff_merges_default_to_dense_combined(struct rev_info *revs);
-void rev_diff_merges_first_parent_defaults_to_enable(struct rev_info *revs);
-
 #endif