diff options
author | Sergey Organov <sorganov@gmail.com> | 2021-04-13 14:41:15 +0300 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-04-16 23:38:35 -0700 |
commit | 26a0f58da84a7da11f9175144c9a926e7b376349 (patch) | |
tree | 03fd9452c65541f8b14e86aeb583a1f3895f191e | |
parent | diff-merges: introduce --diff-merges=on (diff) | |
download | tgif-26a0f58da84a7da11f9175144c9a926e7b376349.tar.xz |
diff-merges: refactor set_diff_merges()
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>
-rw-r--r-- | diff-merges.c | 36 |
1 files changed, 21 insertions, 15 deletions
diff --git a/diff-merges.c b/diff-merges.c index ff227368bd..66c8ba0cc6 100644 --- a/diff-merges.c +++ b/diff-merges.c @@ -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; } /* |