From patchwork Sat Apr 10 17:16:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12195731 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A32F0C433B4 for ; Sat, 10 Apr 2021 17:17:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 73EF0611C9 for ; Sat, 10 Apr 2021 17:17:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234839AbhDJRRi (ORCPT ); Sat, 10 Apr 2021 13:17:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36084 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234513AbhDJRRf (ORCPT ); Sat, 10 Apr 2021 13:17:35 -0400 Received: from mail-lj1-x22f.google.com (mail-lj1-x22f.google.com [IPv6:2a00:1450:4864:20::22f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 25F1CC06138B for ; Sat, 10 Apr 2021 10:17:20 -0700 (PDT) Received: by mail-lj1-x22f.google.com with SMTP id o16so10179286ljp.3 for ; Sat, 10 Apr 2021 10:17:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ZVP/Gc6XixM5Q2Z/soNlllHo+dq/y70Ei8l72s9Bsv4=; b=IEfT1eE44W63YCCTMebX38S1cEtKNCpUhGxQE5UUSGNDut9BKG+69UE+UFJTqCyKbr v1RxuXd/0T0hUuqTBfgGRgayv8mgqvNstt13/HlFP3+AOosxJSFdrCNTCQKeaxh5yGfX RaJQomgE9L+Z+BNx2+3InqhZWRxiJOAANJOjXpzlFvnPzQfm+Y8iPiKjxfO376PxgEEC GWqrzX7EEO5tTL1yTvoMJ4LNwulI6R/+a0No5kz2xR+ycOQd6cNrfUpwSMNhoWRqfXE7 429GO4nIieuMg0KE9mXjZajFo2d//qAJg9F7B68OnaQ6GTq8his5HJ2D77LKj8Wf5KWO 1zeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ZVP/Gc6XixM5Q2Z/soNlllHo+dq/y70Ei8l72s9Bsv4=; b=SZoCoJHrwhMvbUq+ACq5stjRBrt+lKU6Ar7GgILY6I3dd4RxvIU61Am54cg5JraKBr Mt89IefL5Op1F1KoBRpgkALUwqGwj7ApHzvvgJw0JItsaBtCuV70wyWWOKZwX5oI7PI3 rmzh1As36xEaWbuz781TednRdhffE4yDODuLNqnb8cOv26hsQdOvVcSeh4f3q0es2N+5 sGRdABHDEcnbXRYUlhNj9SLVBCZqshKHj11vnI+p/PwophPgsvgV5hdB8xpvz3jv0eql y8PenJ708wq5xkSdYF4sbEpzyByILLkrjaofzFPc0tuaZGyjFOK1WmGfF5ALBqTzJeb+ jUXA== X-Gm-Message-State: AOAM532V4nvHvH1Ad8q96C/wpwKjEgiuGr6s03Nsg2zHbxaykzNUBkvb hV/ggYvO+5dSEP7pvqwUijo= X-Google-Smtp-Source: ABdhPJywY3TEmORgG7a5ZBDq7jvhmnwkBwtZyjMmu60P2A474k8MU/Dqo0L9wQuMqEWupw40Jk4FxQ== X-Received: by 2002:a2e:a177:: with SMTP id u23mr2653002ljl.329.1618075038696; Sat, 10 Apr 2021 10:17:18 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id z7sm1336543ljo.64.2021.04.10.10.17.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Apr 2021 10:17:18 -0700 (PDT) From: Sergey Organov To: Junio C Hamano Cc: Jeff King , Philip Oakley , Elijah Newren , Felipe Contreras , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= , git@vger.kernel.org, Sergey Organov Subject: [PATCH v1 1/5] diff-merges: introduce --diff-merges=default Date: Sat, 10 Apr 2021 20:16:53 +0300 Message-Id: <20210410171657.20159-2-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210410171657.20159-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210410171657.20159-1-sorganov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Introduce the notion of default diff format for merges, and the option "default" to select it. The default format is "separate" and can't yet be changed, so effectively "default" is just a synonym for "separate" for now. Add corresponding test to t4013. This is in preparation for introducing log.diffMerges configuration option that will let --diff-merges=default to be configured to any supported format. Signed-off-by: Sergey Organov --- diff-merges.c | 7 +++++++ t/t4013-diff-various.sh | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/diff-merges.c b/diff-merges.c index 146bb50316a6..7690580d7464 100644 --- a/diff-merges.c +++ b/diff-merges.c @@ -2,6 +2,11 @@ #include "revision.h" +typedef void (*diff_merges_setup_func_t)(struct rev_info *); +static void set_separate(struct rev_info *revs); + +static diff_merges_setup_func_t set_to_default = set_separate; + static void suppress(struct rev_info *revs) { revs->separate_merges = 0; @@ -66,6 +71,8 @@ static void set_diff_merges(struct rev_info *revs, const char *optarg) set_combined(revs); else if (!strcmp(optarg, "cc") || !strcmp(optarg, "dense-combined")) set_dense_combined(revs); + else if (!strcmp(optarg, "default")) + set_to_default(revs); else die(_("unknown value for --diff-merges: %s"), optarg); diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh index 6cca8b84a6bf..8acb5b866900 100755 --- a/t/t4013-diff-various.sh +++ b/t/t4013-diff-various.sh @@ -452,6 +452,14 @@ diff-tree --stat --compact-summary initial mode diff-tree -R --stat --compact-summary initial mode EOF +test_expect_success 'log --diff-merges=default matches --diff-merges=separate' ' + git log -p --diff-merges=separate master >result && + process_diffs result >expected && + git log -p --diff-merges=default master >result && + process_diffs result >actual && + test_cmp expected actual +' + test_expect_success 'log -S requires an argument' ' test_must_fail git log -S ' From patchwork Sat Apr 10 17:16:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12195735 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AD05DC43460 for ; Sat, 10 Apr 2021 17:17:32 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 86C34611AE for ; Sat, 10 Apr 2021 17:17:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234866AbhDJRRm (ORCPT ); Sat, 10 Apr 2021 13:17:42 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36092 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234738AbhDJRRg (ORCPT ); Sat, 10 Apr 2021 13:17:36 -0400 Received: from mail-lj1-x22c.google.com (mail-lj1-x22c.google.com [IPv6:2a00:1450:4864:20::22c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A0B9CC06138A for ; Sat, 10 Apr 2021 10:17:21 -0700 (PDT) Received: by mail-lj1-x22c.google.com with SMTP id c1so1908717ljd.7 for ; Sat, 10 Apr 2021 10:17:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fWPLUK/87IasufE+rzXw9S6VGHfQUN0z9gXDzUuyxzs=; b=uLcCpOaA7ubD4qu6/3ue03fazJDFAivec3KdbiH4UhiZwfDnQCjncSINafO9bx6iAK uJ29ktsPVkZaET1azzXAPsKY4aAP/fBKp8V5teZNJOfIegUqNFQmgGIA1BPKVTOcMK9J 60vbC5vfNS+DgLAQc89lJUEzSs9q83wS3tmxu8Vz3APD10R0JP1ByromvfSjIlBxjAiS Mb1FVdVt11BnAXyGhFAolEvhoNI5x4fHY5YCWwIS7lJZpYKfyika3PQgmH2daYKkoB8k lJV2oXYlUXbIX3TbxUbOpgff4169PMWPLrBa3Ge1xufmhV/+LL8fn1X3auRXnrtCvOd6 N0jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fWPLUK/87IasufE+rzXw9S6VGHfQUN0z9gXDzUuyxzs=; b=D6f6/aj9J8mmX7DN9WuSX7AiGzZcMXy4q9Rfjtp6CJWJNXnZccPAapAXEi4mG7GWbi B6Un4KW6J3yVYyKlINcdh/ZRq4389lwnS/oq5fSdf4fDuKT4EnkjXTJLBqzOj7gvnpNe k56G8YSS6tOT6VeP+yZ39BGSY1KU9yAW5a4rvk0AGVNXB8IsZJoOQxxHpAIPXK4iGErz CxzVVTUTxO4JBrlTgpThpTxb21rZUEfUa+yRnkYsXSY1lJT/1WW6OVdSHztoNAG7pEIu uV+29vKwcxEL5qVoBqjSM6hnhxzk3Ru0u4h+uBdk+U1aNyRj5lLpizGaNqd7rLuaj8te WlkQ== X-Gm-Message-State: AOAM532C46cQviJ5XHIaQ18F4her3B4PDXs0GhLvarFB0n2x6TolzjEQ J3vJgJKoikLe8Wkwhmt4FxQ= X-Google-Smtp-Source: ABdhPJw4v08NBHtdnoI7KJ9J22n0bslbJwNplKMZI5lSuIEtrVxOfmtHej+ugQXMsstXTiq1zwT8qw== X-Received: by 2002:a2e:5049:: with SMTP id v9mr7212582ljd.259.1618075039537; Sat, 10 Apr 2021 10:17:19 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id z7sm1336543ljo.64.2021.04.10.10.17.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Apr 2021 10:17:19 -0700 (PDT) From: Sergey Organov To: Junio C Hamano Cc: Jeff King , Philip Oakley , Elijah Newren , Felipe Contreras , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= , git@vger.kernel.org, Sergey Organov Subject: [PATCH v1 2/5] diff-merges: refactor set_diff_merges() Date: Sat, 10 Apr 2021 20:16:54 +0300 Message-Id: <20210410171657.20159-3-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210410171657.20159-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210410171657.20159-1-sorganov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org 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 --- 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; } /* From patchwork Sat Apr 10 17:16:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12195737 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0B5F5C43462 for ; Sat, 10 Apr 2021 17:17:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D899C610A2 for ; Sat, 10 Apr 2021 17:17:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234900AbhDJRRq (ORCPT ); Sat, 10 Apr 2021 13:17:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234761AbhDJRRh (ORCPT ); Sat, 10 Apr 2021 13:17:37 -0400 Received: from mail-lj1-x22a.google.com (mail-lj1-x22a.google.com [IPv6:2a00:1450:4864:20::22a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D6DDBC06138C for ; Sat, 10 Apr 2021 10:17:21 -0700 (PDT) Received: by mail-lj1-x22a.google.com with SMTP id a1so10205463ljp.2 for ; Sat, 10 Apr 2021 10:17:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=fphA7Cp+Mv/DrXHrgICQamnofaFLQMa9hKIvHULv1cI=; b=NJ4WIVNHNZFZtJ0GIIU/UhFiBXw3sRpJoQNW/DjCF6UlCwI1a6np04sX8A1gNBs6kT ZfzoZHAlpnLrSWWrn/w229qdXqrqvOgtMmGEEbRjX8+UqdjbEx0qKt3h4WUAgYbeEzr7 p97FXUi0ndzeiA3yh+7NRAN21tHR1F8hUkkr5UjRnhtZvUskvcNa+AuIc7wxKouxnhiz aIQaEfdWhRMxj+LuU7GpeEbRcaCAAoKfl0FXecc1zMxw0fsfIjylkWzQWKMU+IRTP+Ol iF1SdaDo5EmuDwcMk+a4a38ejuqpWixiQ2bT9Rh4wJCAQ9/IqpT0WiIstAXM16mVMfYD SibA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=fphA7Cp+Mv/DrXHrgICQamnofaFLQMa9hKIvHULv1cI=; b=icdbi7x+v5Mvd4/Nv88L3Jan8JcfezUYLqGrVCkxqLcmvGtfJvD8Ui4cwhBy36goO1 HFJfFKzuaVDsL1mooK0cIQjDCd/3c7Ymryu8Yw2gv7IzfPPwUe0mtovRIYVFspegdIg4 hid41gIPVNOr+dbD6yz5vFeaV5i4bg2772qMNodwE6MK0IDnteKI2GAFwQnOTLNH3nRr L9tO6vpjej6/gMtJQALJJOxxsB/9yn8NESJI3bAmJ6rZLZlUeu8Jg3K8jcje+e537FlX M2zod0bcLZoujkcEv5OIkQyZmIbSpziNpjoymoqzf8NooBo97f5Ih6HvsoiF5dvMCxuf fqqQ== X-Gm-Message-State: AOAM532q0TKS+OQbQtxyQ7YhVft3Rbmo6v7lZ2/ZLRNCXJI9YNLWfd3r iZR87bggNpsWgqKzCy3m2hfzT3KCiF0= X-Google-Smtp-Source: ABdhPJyzdgHK/bPfYIOh9+OIfmNUtnPGvmqD5b6QBX7m7Ja9Y0gib4bOobGqfIPlIBCcgPaThpJteQ== X-Received: by 2002:a2e:9184:: with SMTP id f4mr5264803ljg.144.1618075040403; Sat, 10 Apr 2021 10:17:20 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id z7sm1336543ljo.64.2021.04.10.10.17.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Apr 2021 10:17:20 -0700 (PDT) From: Sergey Organov To: Junio C Hamano Cc: Jeff King , Philip Oakley , Elijah Newren , Felipe Contreras , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= , git@vger.kernel.org, Sergey Organov Subject: [PATCH v1 3/5] diff-merges: adapt -m to enable default diff format Date: Sat, 10 Apr 2021 20:16:55 +0300 Message-Id: <20210410171657.20159-4-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210410171657.20159-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210410171657.20159-1-sorganov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Let -m option (and --diff-merges=m) enable the default format instead of "separate", to be able to tune it with log.diffMerges option. Signed-off-by: Sergey Organov --- diff-merges.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/diff-merges.c b/diff-merges.c index 9918b6ac55e4..a02f39828336 100644 --- a/diff-merges.c +++ b/diff-merges.c @@ -34,10 +34,10 @@ static void set_m(struct rev_info *revs) { /* * To "diff-index", "-m" means "match missing", and to the "log" - * family of commands, it means "show full diff for merges". Set + * family of commands, it means "show default diff for merges". Set * both fields appropriately. */ - set_separate(revs); + set_to_default(revs); revs->match_missing = 1; } @@ -61,13 +61,13 @@ static diff_merges_setup_func_t func_by_opt(const char *optarg) return suppress; if (!strcmp(optarg, "1") || !strcmp(optarg, "first-parent")) return set_first_parent; - else if (!strcmp(optarg, "m") || !strcmp(optarg, "separate")) + else if (!strcmp(optarg, "separate")) return set_separate; else if (!strcmp(optarg, "c") || !strcmp(optarg, "combined")) return set_combined; else if (!strcmp(optarg, "cc") || !strcmp(optarg, "dense-combined")) return set_dense_combined; - else if (!strcmp(optarg, "default")) + else if (!strcmp(optarg, "m") || !strcmp(optarg, "default")) return set_to_default; return NULL; } From patchwork Sat Apr 10 17:16:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12195739 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1F93DC43470 for ; Sat, 10 Apr 2021 17:17:35 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EE30B611ED for ; Sat, 10 Apr 2021 17:17:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234874AbhDJRRs (ORCPT ); Sat, 10 Apr 2021 13:17:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36098 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234832AbhDJRRi (ORCPT ); Sat, 10 Apr 2021 13:17:38 -0400 Received: from mail-lj1-x236.google.com (mail-lj1-x236.google.com [IPv6:2a00:1450:4864:20::236]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D82FBC06138A for ; Sat, 10 Apr 2021 10:17:22 -0700 (PDT) Received: by mail-lj1-x236.google.com with SMTP id o16so10179363ljp.3 for ; Sat, 10 Apr 2021 10:17:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ephUlwupFbjFTnzN2zWNMpIJf4tmj4WtTZn1Ml1+zF8=; b=jYNQJzeOSISuPugeMBiFhY7kifR8Ii+NUKeVDnwDn9fCTcKapsvNKIZZe7bgGBZrv6 RLa0PCf6JatUD8QvGcIPF7noXVR4++n+enfsAksBu1MBZoZjVYfC/S/ajDzsvVw8uIb2 9b5iBYTogOUOx+lVFFq/IrfavVOJy97N+m5M0RglKg45Du4qkx/HR3JYE6UXztUTq2ew fJiFV4YrywkPyq3uimsldqRyjnsLztAIWb/AT8ImR5Jc1n9De429qWZocVirN8V5ha7z 5wkdbSSvRBJmwtgtAAqZ4uH+zK4WcsBb5JNOHzRQDAghochWXtQSdwBYBzAt53vIJiyE yW2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ephUlwupFbjFTnzN2zWNMpIJf4tmj4WtTZn1Ml1+zF8=; b=X9zFORjjq9XAB5lNxvuVXWwxWs9qenhskFmy8RRwfDujX+kz+OzpHm1/9JOlRj/Bf8 pHsYNafH1Wn4YChdcpcnZL7xr6tlDvqdMk3ylMnDfl86Zv4ecvfJ2a4jIkg14rP0xhFR SmRiuMPHHAHmbfhh6J02yjQq8Htjzsu6TUkLVvH9kd/7KDmIkMIjJODsBXeSBjVfRFKE njNjZlcaUF0sjbdgpOoQhSRLVgKyk3yGfFadix+RvQqoAhWSbA+DL18SMJ/r0cKCymc2 B+nrguiDfbN88ZxLGe2oGioAz/NjNnKR6QBKEiBeyPULe0T/jm43YMJJyUcjzCam9u99 ShBQ== X-Gm-Message-State: AOAM533QkuYtvWJKhRNcErVPRHqUqTl/wu2bamC8S9rASSWOh69I9NhL FCm73bk1gkId681pO7NFXV8= X-Google-Smtp-Source: ABdhPJzljpHs99O9fKGXTmo6du4Hlp0BhVQ442ALk5J5BoUtiME3u5w7UVqH712iXNOMp/ug+xCWaQ== X-Received: by 2002:a2e:b4cc:: with SMTP id r12mr12644736ljm.247.1618075041437; Sat, 10 Apr 2021 10:17:21 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id z7sm1336543ljo.64.2021.04.10.10.17.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Apr 2021 10:17:20 -0700 (PDT) From: Sergey Organov To: Junio C Hamano Cc: Jeff King , Philip Oakley , Elijah Newren , Felipe Contreras , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= , git@vger.kernel.org, Sergey Organov Subject: [PATCH v1 4/5] diff-merges: introduce log.diffMerges config variable Date: Sat, 10 Apr 2021 20:16:56 +0300 Message-Id: <20210410171657.20159-5-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210410171657.20159-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210410171657.20159-1-sorganov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org New log.diffMerges configuration variable sets the format that --diff-merges=default will be using. The default is "separate". t4013: add the following tests for log.diffMerges config: * Test that wrong values are denied. * Test that the value of log.diffMerges properly affects both --diff-merges=default and -m. t9902: fix completion tests for log.d* to match log.diffMerges. Added documentation for log.diffMerges. Signed-off-by: Sergey Organov --- Documentation/config/log.txt | 5 +++++ builtin/log.c | 2 ++ diff-merges.c | 11 +++++++++++ diff-merges.h | 2 ++ t/t4013-diff-various.sh | 23 +++++++++++++++++++++++ t/t9902-completion.sh | 3 +++ 6 files changed, 46 insertions(+) diff --git a/Documentation/config/log.txt b/Documentation/config/log.txt index 208d5fdcaa68..456eb07800cb 100644 --- a/Documentation/config/log.txt +++ b/Documentation/config/log.txt @@ -24,6 +24,11 @@ log.excludeDecoration:: the config option can be overridden by the `--decorate-refs` option. +log.diffMerges:: + Set default diff format to be used for merge commits. See + `--diff-merges` in linkgit:git-log[1] for details. + Defaults to `separate`. + log.follow:: If `true`, `git log` will act as if the `--follow` option was used when a single is given. This has the same limitations as `--follow`, diff --git a/builtin/log.c b/builtin/log.c index 8acd285dafd8..6102893fccb9 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -481,6 +481,8 @@ static int git_log_config(const char *var, const char *value, void *cb) decoration_style = 0; /* maybe warn? */ return 0; } + if (!strcmp(var, "log.diffmerges")) + return diff_merges_config(value); if (!strcmp(var, "log.showroot")) { default_show_root = git_config_bool(var, value); return 0; diff --git a/diff-merges.c b/diff-merges.c index a02f39828336..75630fb8e6b8 100644 --- a/diff-merges.c +++ b/diff-merges.c @@ -90,6 +90,17 @@ static void set_diff_merges(struct rev_info *revs, const char *optarg) * Public functions. They are in the order they are called. */ +int diff_merges_config(const char *value) +{ + diff_merges_setup_func_t func = func_by_opt(value); + + if (!func) + return -1; + + set_to_default = func; + return 0; +} + int diff_merges_parse_opts(struct rev_info *revs, const char **argv) { int argcount = 1; diff --git a/diff-merges.h b/diff-merges.h index 659467c99a4f..09d9a6c9a4fb 100644 --- a/diff-merges.h +++ b/diff-merges.h @@ -9,6 +9,8 @@ struct rev_info; +int diff_merges_config(const char *value); + int diff_merges_parse_opts(struct rev_info *revs, const char **argv); void diff_merges_suppress(struct rev_info *revs); diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh index 8acb5b866900..87cab7867135 100755 --- a/t/t4013-diff-various.sh +++ b/t/t4013-diff-various.sh @@ -460,6 +460,29 @@ test_expect_success 'log --diff-merges=default matches --diff-merges=separate' ' test_cmp expected actual ' +test_expect_success 'deny wrong log.diffMerges config' ' + test_config log.diffMerges wrong-value && + test_expect_code 128 git log +' + +test_expect_success 'git config log.diffMerges first-parent' ' + git log -p --diff-merges=first-parent master >result && + process_diffs result >expected && + test_config log.diffMerges first-parent && + git log -p --diff-merges=default master >result && + process_diffs result >actual && + test_cmp expected actual +' + +test_expect_success 'git config log.diffMerges first-parent vs -m' ' + git log -p --diff-merges=first-parent master >result && + process_diffs result >expected && + test_config log.diffMerges first-parent && + git log -p -m master >result && + process_diffs result >actual && + test_cmp expected actual +' + test_expect_success 'log -S requires an argument' ' test_must_fail git log -S ' diff --git a/t/t9902-completion.sh b/t/t9902-completion.sh index 04ce884ef5ac..4d732d6d4f81 100755 --- a/t/t9902-completion.sh +++ b/t/t9902-completion.sh @@ -2306,6 +2306,7 @@ test_expect_success 'git config - variable name' ' test_completion "git config log.d" <<-\EOF log.date Z log.decorate Z + log.diffMerges Z EOF ' @@ -2327,6 +2328,7 @@ test_expect_success 'git -c - variable name' ' test_completion "git -c log.d" <<-\EOF log.date=Z log.decorate=Z + log.diffMerges=Z EOF ' @@ -2348,6 +2350,7 @@ test_expect_success 'git clone --config= - variable name' ' test_completion "git clone --config=log.d" <<-\EOF log.date=Z log.decorate=Z + log.diffMerges=Z EOF ' From patchwork Sat Apr 10 17:16:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12195741 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 40354C433ED for ; Sat, 10 Apr 2021 17:17:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0FB96611CA for ; Sat, 10 Apr 2021 17:17:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234883AbhDJRRt (ORCPT ); Sat, 10 Apr 2021 13:17:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36106 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234844AbhDJRRi (ORCPT ); Sat, 10 Apr 2021 13:17:38 -0400 Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CED32C06138B for ; Sat, 10 Apr 2021 10:17:23 -0700 (PDT) Received: by mail-lf1-x129.google.com with SMTP id j18so14685261lfg.5 for ; Sat, 10 Apr 2021 10:17:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dgnW3d7zj7OHdSus7sVihMDY3Fiv9ul0GN7RZl/DC7U=; b=UQI5cKfolVQgYwr4eVPU48fULDPVRxevhfxznxj+gBl2xwUTkNGYQRZPQKMGJntBNW 7SBy8Imj2NF91g3vrssuxr4oLkQcLi13URK0yCfJJYnuyGCOfmWJs2SbGZDTmgI04EwQ llYq5j221RcXIjejaFIRDQu0yMrm/CpXn1N/tlbzVIVKT8ZoonmHf3W5UFDwCrxS4MJJ TCyNcu2e9FB2BZ5OkicT4ltz1O5mP9A6GBe8OYXPkWHndat76qJUisgZFudIb5+nypH7 DBAMkX8BdFVo7MupIeZgfT/UxE//xbLLqP/FRIU2YsRqcazNcjw6xQAqxsAyhvPIC3mH l6zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dgnW3d7zj7OHdSus7sVihMDY3Fiv9ul0GN7RZl/DC7U=; b=RtNtnicVH99abe7cGtFZAfjgC+sJTGwqVs1DCq/WtgenWS1pmB8eAuRymOVQikmfr8 SNazDvmzx4JnEQNce3s8PMxgWlBoogyFKfORc9T1mRHwwVcOs/cqX/UNJ3qqIx2Sw979 W4zrqTvMsmJyLJ9tRbNUd0kPPmBIXhau0A2N/nYqGLx2ZiToqHeMRYcQ+fFnKR0aVqyr xJA13FohiWnnfnweIGdXjOET8eq5E13n5EJtKU07yST5outIIDkfit0TKaAhjb/d1QBW 3/Wlpz5nFNkL8AFEQHxVkYAoQT2vM7d+SZTZd43hBXBH8x+4rOlKg5l2nFfPYvvX33dU O/YQ== X-Gm-Message-State: AOAM532fSlAHO4AuALHRhse/nN7JKTgiS3vUasR1+jdHxIVcM6MyHMoX SOB8BJxPQy633F0OS95tPKk= X-Google-Smtp-Source: ABdhPJxsbI8hb2mrU767xXEGHLke39aUSJR3NpfQMaZVdNZJqrN3e8+KEggp/Yt635GjBxezhz+1jQ== X-Received: by 2002:ac2:46cf:: with SMTP id p15mr3309199lfo.227.1618075042381; Sat, 10 Apr 2021 10:17:22 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id z7sm1336543ljo.64.2021.04.10.10.17.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 10 Apr 2021 10:17:21 -0700 (PDT) From: Sergey Organov To: Junio C Hamano Cc: Jeff King , Philip Oakley , Elijah Newren , Felipe Contreras , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= , git@vger.kernel.org, Sergey Organov Subject: [PATCH v1 5/5] doc/diff-options: document new --diff-merges features Date: Sat, 10 Apr 2021 20:16:57 +0300 Message-Id: <20210410171657.20159-6-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210410171657.20159-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210410171657.20159-1-sorganov@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Document changes in -m and --diff-merges=m semantics, as well as new --diff-merges=default option. Signed-off-by: Sergey Organov --- Documentation/diff-options.txt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt index aa2b5c11f20b..31e2bacf5252 100644 --- a/Documentation/diff-options.txt +++ b/Documentation/diff-options.txt @@ -34,7 +34,7 @@ endif::git-diff[] endif::git-format-patch[] ifdef::git-log[] ---diff-merges=(off|none|first-parent|1|separate|m|combined|c|dense-combined|cc):: +--diff-merges=(off|none|default|first-parent|1|separate|m|combined|c|dense-combined|cc):: --no-diff-merges:: Specify diff format to be used for merge commits. Default is {diff-merges-default} unless `--first-parent` is in use, in which case @@ -45,17 +45,24 @@ ifdef::git-log[] Disable output of diffs for merge commits. Useful to override implied value. + +--diff-merges=default::: +--diff-merges=m::: +-m::: + This option makes diff output for merge commits to be shown in + the default format. `-m` will produce the output only if `-p` + is given as well. The default format could be changed using + `log.diffMerges` configuration parameter, which default value + is `separate`. ++ --diff-merges=first-parent::: --diff-merges=1::: This option makes merge commits show the full diff with respect to the first parent only. + --diff-merges=separate::: ---diff-merges=m::: --m::: This makes merge commits show the full diff with respect to each of the parents. Separate log entry and diff is generated - for each parent. `-m` doesn't produce any output without `-p`. + for each parent. + --diff-merges=combined::: --diff-merges=c:::