]> git.ipfire.org Git - thirdparty/git.git/commitdiff
diff-merges: refactor set_diff_merges()
authorSergey Organov <sorganov@gmail.com>
Tue, 13 Apr 2021 11:41:15 +0000 (14:41 +0300)
committerJunio C Hamano <gitster@pobox.com>
Sat, 17 Apr 2021 06:38:35 +0000 (23:38 -0700)
Split set_diff_merges() into separate parsing and execution functions,
the former to be reused for parsing of configuration values later in
the patch series.

Signed-off-by: Sergey Organov <sorganov@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff-merges.c

index ff227368bd46f185c153e74d8343eb575568018e..66c8ba0cc6a010930e813cbb4232786509ef37ef 100644 (file)
@@ -55,29 +55,35 @@ static void set_dense_combined(struct rev_info *revs)
        revs->dense_combined_merges = 1;
 }
 
-static void set_diff_merges(struct rev_info *revs, const char *optarg)
+static diff_merges_setup_func_t func_by_opt(const char *optarg)
 {
-       if (!strcmp(optarg, "off") || !strcmp(optarg, "none")) {
-               suppress(revs);
-               /* Return early to leave revs->merges_need_diff unset */
-               return;
-       }
-
+       if (!strcmp(optarg, "off") || !strcmp(optarg, "none"))
+               return suppress;
        if (!strcmp(optarg, "1") || !strcmp(optarg, "first-parent"))
-               set_first_parent(revs);
+               return set_first_parent;
        else if (!strcmp(optarg, "m") || !strcmp(optarg, "separate"))
-               set_separate(revs);
+               return set_separate;
        else if (!strcmp(optarg, "c") || !strcmp(optarg, "combined"))
-               set_combined(revs);
+               return set_combined;
        else if (!strcmp(optarg, "cc") || !strcmp(optarg, "dense-combined"))
-               set_dense_combined(revs);
+               return set_dense_combined;
        else if (!strcmp(optarg, "on"))
-               set_to_default(revs);
-       else
+               return set_to_default;
+       return NULL;
+}
+
+static void set_diff_merges(struct rev_info *revs, const char *optarg)
+{
+       diff_merges_setup_func_t func = func_by_opt(optarg);
+
+       if (!func)
                die(_("unknown value for --diff-merges: %s"), optarg);
 
-       /* The flag is cleared by set_xxx() functions, so don't move this up */
-       revs->merges_need_diff = 1;
+       func(revs);
+
+       /* NOTE: the merges_need_diff flag is cleared by func() call */
+       if (func != suppress)
+               revs->merges_need_diff = 1;
 }
 
 /*