From: Sergey Organov <sorganov@gmail.com> To: Junio C Hamano <gitster@pobox.com> Cc: "Jeff King" <peff@peff.net>, "Philip Oakley" <philipoakley@iee.email>, "Elijah Newren" <newren@gmail.com>, "Felipe Contreras" <felipe.contreras@gmail.com>, "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>, git@vger.kernel.org, "Sergey Organov" <sorganov@gmail.com> Subject: [PATCH v1 2/5] diff-merges: refactor set_diff_merges() Date: Sat, 10 Apr 2021 20:16:54 +0300 [thread overview] Message-ID: <20210410171657.20159-3-sorganov@gmail.com> (raw) In-Reply-To: <20210410171657.20159-1-sorganov@gmail.com> 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> --- diff-merges.c | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/diff-merges.c b/diff-merges.c index 7690580d7464..9918b6ac55e4 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, "default")) - 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; } /* -- 2.25.1
next prev parent reply other threads:[~2021-04-10 17:17 UTC|newest] Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-04-07 22:55 [PATCH 0/9] git log: configurable default format for merge diffs Sergey Organov 2021-04-07 22:56 ` [PATCH 1/9] diff-merges: introduce --diff-merges=def Sergey Organov 2021-04-08 11:48 ` Philip Oakley 2021-04-08 14:21 ` Sergey Organov 2021-04-08 17:27 ` Junio C Hamano 2021-04-08 17:38 ` Sergey Organov 2021-04-07 22:56 ` [PATCH 2/9] diff-merges: refactor set_diff_merges() Sergey Organov 2021-04-07 22:56 ` [PATCH 3/9] diff-merges: introduce log.diffMerges config variable Sergey Organov 2021-04-08 21:37 ` SZEDER Gábor 2021-04-08 21:51 ` SZEDER Gábor 2021-04-08 22:01 ` Junio C Hamano 2021-04-08 23:04 ` Sergey Organov 2021-04-07 22:56 ` [PATCH 4/9] diff-merges: adapt -m to enable default diff format Sergey Organov 2021-04-07 22:56 ` [PATCH 5/9] t4013: add test for --diff-merges=def Sergey Organov 2021-04-07 22:56 ` [PATCH 6/9] t4013: add tests for log.diffMerges config Sergey Organov 2021-04-07 23:06 ` Ævar Arnfjörð Bjarmason 2021-04-07 23:35 ` Junio C Hamano 2021-04-08 14:25 ` Sergey Organov 2021-04-07 22:56 ` [PATCH 7/9] t9902: fix completion tests for log.d* to match log.diffMerges Sergey Organov 2021-04-07 23:05 ` Ævar Arnfjörð Bjarmason 2021-04-08 14:41 ` Sergey Organov 2021-04-08 19:50 ` Ævar Arnfjörð Bjarmason 2021-04-08 20:26 ` Sergey Organov 2021-04-08 22:13 ` SZEDER Gábor 2021-04-08 23:07 ` Sergey Organov 2021-04-07 22:56 ` [PATCH 8/9] doc/diff-options: document new --diff-merges features Sergey Organov 2021-04-07 22:56 ` [PATCH 9/9] doc/config: document log.diffMerges Sergey Organov 2021-04-10 17:16 ` [PATCH v1 0/5] git log: configurable default format for merge diffs Sergey Organov 2021-04-10 17:16 ` [PATCH v1 1/5] diff-merges: introduce --diff-merges=default Sergey Organov 2021-04-10 17:16 ` Sergey Organov [this message] 2021-04-10 17:16 ` [PATCH v1 3/5] diff-merges: adapt -m to enable default diff format Sergey Organov 2021-04-10 17:16 ` [PATCH v1 4/5] diff-merges: introduce log.diffMerges config variable Sergey Organov 2021-04-10 17:16 ` [PATCH v1 5/5] doc/diff-options: document new --diff-merges features Sergey Organov 2021-04-11 16:13 ` [PATCH v1 0/5] git log: configurable default format for merge diffs Junio C Hamano 2021-04-11 18:04 ` Sergey Organov 2021-04-11 19:02 ` Junio C Hamano 2021-04-11 20:38 ` Sergey Organov 2021-04-11 21:58 ` Sergey Organov 2021-04-13 11:41 ` [PATCH v2 " Sergey Organov 2021-04-13 11:41 ` [PATCH v2 1/5] diff-merges: introduce --diff-merges=on Sergey Organov 2021-04-13 23:18 ` Junio C Hamano 2021-04-13 11:41 ` [PATCH v2 2/5] diff-merges: refactor set_diff_merges() Sergey Organov 2021-04-13 11:41 ` [PATCH v2 3/5] diff-merges: adapt -m to enable default diff format Sergey Organov 2021-04-13 11:41 ` [PATCH v2 4/5] diff-merges: introduce log.diffMerges config variable Sergey Organov 2021-04-15 20:21 ` Junio C Hamano 2021-04-16 8:30 ` Sergey Organov 2021-04-13 11:41 ` [PATCH v2 5/5] doc/diff-options: document new --diff-merges features Sergey Organov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: http://vger.kernel.org/majordomo-info.html * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210410171657.20159-3-sorganov@gmail.com \ --to=sorganov@gmail.com \ --cc=avarab@gmail.com \ --cc=felipe.contreras@gmail.com \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.com \ --cc=newren@gmail.com \ --cc=peff@peff.net \ --cc=philipoakley@iee.email \ --subject='Re: [PATCH v1 2/5] diff-merges: refactor set_diff_merges()' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://80x24.org/mirrors/git.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).