From patchwork Tue Apr 13 11:41:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12200281 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,URIBL_BLOCKED,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 64B5CC43460 for ; Tue, 13 Apr 2021 11:41:52 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3EB9D6109D for ; Tue, 13 Apr 2021 11:41:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244849AbhDMLmK (ORCPT ); Tue, 13 Apr 2021 07:42:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50244 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231378AbhDMLmI (ORCPT ); Tue, 13 Apr 2021 07:42:08 -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 BE666C061574 for ; Tue, 13 Apr 2021 04:41:48 -0700 (PDT) Received: by mail-lj1-x22f.google.com with SMTP id u20so18951264lja.13 for ; Tue, 13 Apr 2021 04:41:48 -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=MLGnBNGf04bZq0wSny6Kni8QGvJ/bcqWXp8uOi/a9Lc=; b=Qw48NyOIk1aG8jz9jWutu+712ZNf4cL1A7NgTiArXgKSXayOJQ/AJxhgKMXMiAc4Gv 11hpDHkU5g5qLZOpOIaL58eNHF3F2P3QNAgLy4WwpUPap1WCUBUKmJ0htLNQtI9dLdrY XVkX2nvNwwXWvXKdK0DYlRMGlsf4aWno/Z93brf508cM/yAjwQcPvk/yLk8EOTymFE3J NsT4mJgcAGLZ291thR5OYxQNtdEFSQIyX1zpvn+pqMwiHQ8mOWHHg5H9Hly4uIL3Hr7M 3n1g5NeOsLAB9oDjWy9dULGz0x5J6q52d4laBSlDNP1YPlcqu5ShcuUa13PcYTwqNGAN wN3Q== 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=MLGnBNGf04bZq0wSny6Kni8QGvJ/bcqWXp8uOi/a9Lc=; b=b3ZYgVnA0ry+sAIj5eMqLrkcuFQ8X5exLsmzdfUhL17Vr5vCCD2HCtODXO61igi5Fn WjLwCZ4jWMfcREVl0EumPjetzDhjtM6ZUKhuxUyInrLKVSgmp04UQTsClgtZGASuifAB I3uQ/l9cN9GMyT56+o0dFjk+jDPc9fHK9GZtA7wca8u2agYM3CZsyn3i6J/Lb4NXpWOR wvw+UxDk2ZLGgWdaJeqwNO99+qEXP1i1mg06kvE27pDsZlxPfajUna6FC6h8cYnGt7gW c6UvO2D96tEP0Bi5z7iA0A5dgFD6NUnVN9HSNepkyknW06K+kmKbkHmAnrmn1RW3Uteq 5ykw== X-Gm-Message-State: AOAM531Q+YXiHNdpjixqVoD51fM5FPIl8qBgFUJ+wN90x/zr/OvJxv+j BxtE65c2YCSM82DS/seeTcI= X-Google-Smtp-Source: ABdhPJzTYHm8seQBT291FPhrqVafA6DEzRm6RCD0Ev1PnIMdbW16rk9wmX6eZEpeU/BkHBZ9nseXUA== X-Received: by 2002:a2e:8e37:: with SMTP id r23mr21018135ljk.269.1618314107319; Tue, 13 Apr 2021 04:41:47 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id b11sm663339lfi.292.2021.04.13.04.41.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Apr 2021 04:41:46 -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 v2 1/5] diff-merges: introduce --diff-merges=on Date: Tue, 13 Apr 2021 14:41:14 +0300 Message-Id: <20210413114118.25693-2-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210413114118.25693-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210413114118.25693-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 "on" to select it. The default format is "separate" and can't yet be changed, so effectively "on" 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=on 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..ff227368bd46 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, "on")) + 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..26a7b4d19d4d 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=on matches --diff-merges=separate' ' + git log -p --diff-merges=separate master >result && + process_diffs result >expected && + git log -p --diff-merges=on 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 Tue Apr 13 11:41:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12200283 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 66FC7C433B4 for ; Tue, 13 Apr 2021 11:41:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4614D61244 for ; Tue, 13 Apr 2021 11:41:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244877AbhDMLmN (ORCPT ); Tue, 13 Apr 2021 07:42:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50248 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244674AbhDMLmK (ORCPT ); Tue, 13 Apr 2021 07:42:10 -0400 Received: from mail-lf1-x131.google.com (mail-lf1-x131.google.com [IPv6:2a00:1450:4864:20::131]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D17BAC061574 for ; Tue, 13 Apr 2021 04:41:49 -0700 (PDT) Received: by mail-lf1-x131.google.com with SMTP id e14so14050277lfn.11 for ; Tue, 13 Apr 2021 04:41:49 -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=fS9EG/dhB0miWf93AsvJj3SbQyj78Nif124509juy5w=; b=RbbLU8dQ35EsUJCqFI4EyKLZh3o13va/tptMSro3fKaxSyNPmz0156aD0n035NO1TE aiG3jGW0x3uuoCBci69M95w5yJN9X3QFtndWvRrrmeZBZoBs1IeTGUp7WjF8QE/DqFnl u9DZEvF4bSKLcrSyFv9GSMG9v9c0vq8EwUHg8PuY+/nga0WinMZNQkHs0tN35DR+mMeu hr82pzSs6vOm8hF/n9FO+KKC0oUjPG8xi7OZanBrqhGT/vG6PbY94Cr/pOW01xw07xdf ZHTxgxzPnJO/Sgs5EEhpmdvb3iH0NHKUhGccT6gpncmGFcc5HZdnVJf9FEnkqetnFXnd oteg== 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=fS9EG/dhB0miWf93AsvJj3SbQyj78Nif124509juy5w=; b=F+D5FpkVCbIq1BxCvNU/AHw/o6dyfIht1bZQQVvVUawFCENSUAUFM6B0dKk6CiVvty tNioQZu2wgHVVZXYolVeH3OlujnrvJ9sk8x2ZNW6MDDAyCpe+bUKXwxD3nVypBgGisfg Y24z38fczaKKaLg/VGOfkNVnR33D6CM+6ZJnDLghjlATFCOKm0/0DPsxOK830GYgGYki T9FHCEivldFNxZM6RFkfIaoyQIRqmM3Ek6XuvMRz+rkHXNVfDeUmnx4XpBPh4SVB3qpm veq3bKfHJ/Y3V1Aj7JQIY69Iy/x71HZbOOP/FqYaJVOkDb1031r0Z9bV5rPOVuwuNEbK g93w== X-Gm-Message-State: AOAM531PawFyX/EClEo7KLGCxFpt4ccKJwEoclC++8Rff1DhZh5tkRrM WRLWbKsUfth5gEN0v7hR1kNsv3xln6E= X-Google-Smtp-Source: ABdhPJx81UsAJmqX2QRzW+BZprl6dzL0j4yL8bI2eIilryJeyz9rdUbXkGYToioWlfl84g3lAoFGDg== X-Received: by 2002:ac2:5187:: with SMTP id u7mr10023283lfi.511.1618314108372; Tue, 13 Apr 2021 04:41:48 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id b11sm663339lfi.292.2021.04.13.04.41.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Apr 2021 04:41:47 -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 v2 2/5] diff-merges: refactor set_diff_merges() Date: Tue, 13 Apr 2021 14:41:15 +0300 Message-Id: <20210413114118.25693-3-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210413114118.25693-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210413114118.25693-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 ff227368bd46..66c8ba0cc6a0 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; } /* From patchwork Tue Apr 13 11:41:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12200285 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 4A399C433ED for ; Tue, 13 Apr 2021 11:41:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2D67361029 for ; Tue, 13 Apr 2021 11:41:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244674AbhDMLmO (ORCPT ); Tue, 13 Apr 2021 07:42:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50256 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238660AbhDMLmL (ORCPT ); Tue, 13 Apr 2021 07:42:11 -0400 Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C469BC061756 for ; Tue, 13 Apr 2021 04:41:50 -0700 (PDT) Received: by mail-lj1-x22e.google.com with SMTP id o16so18987261ljp.3 for ; Tue, 13 Apr 2021 04:41:50 -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=AMHivxL4jFTVDyuMa520/THgXsrTD5DwY99Wc72tEVw=; b=MMdtlCd1QArlxe0UicztXJP3TV0hUQHW3fnzJKCJ1nf7xfVsawp+SFslfE/tvWxZwx bTj/7E9COAAawEsyNUZrAaDDpPLQQZqGkHLFmN+tDz7lu75Hqp3ah8UVb1BLg1SSWNd2 4XpqmbQuCCcDCgTln+H0zurNC7o80AOQbDtLy1H1B9fM8SedBFKZfZ1/jLJXKNOke7Xf Am+z4hmUmwui/Sl28csV1kRHqW0MF2v3RS1LSAB7KXj0o2uHghKphxZewUXi/29qi8Mi 6MhJGOcq2Hk9qf+BRymfuu4R71mQ5yRAsgzB3WckrnrOoGWfbHt1Jm/3sg4ShwrRK9W2 EB7w== 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=AMHivxL4jFTVDyuMa520/THgXsrTD5DwY99Wc72tEVw=; b=O1MIbg/QhVVp4R9LQPkmDCRkhDGD6BSLur0+59+8jUGbgOdVaH4nm+qoM1Lm9BM697 LQM5Vu5NadiPjoUhxeLSuED4ANp7ixjXA0Adu1p4UXYUnBfzXrwmKsF+wXLoqMMeb8Mt BNztFmTtI58xKA/myDBIjYCvlmpT4cV5/AwN3HkKN9uu2qW+Atyjw8ip1jniVFBJt5uh 1ovSEKObtZhX6tqPVvrcoH5ZBNngvSTxXO1Dcjo/kdlW9gn1vZjVfoURXvFuIN5zdqdP aKFooLQnRVvf23OCj9qoV9YU1f5uhblctZf1t12aEzrgz+kDPhWkn8Gtx/Lp/pWudx2K fhzA== X-Gm-Message-State: AOAM532jels9dXM3YnMYk0jhW8UhCdtHjFdJTZQFmGSH/5PFyYT6yyTr Kqx3fbgiD+YvFJbR3WyUqNg= X-Google-Smtp-Source: ABdhPJxJ1nWbt4t2x+qAqiVwbhh//aQ1DYCEBn/9didyEXr+l09LDHfNsbhXqgz3eDUHZtKYoeUSWw== X-Received: by 2002:a05:651c:114:: with SMTP id a20mr4284127ljb.82.1618314109322; Tue, 13 Apr 2021 04:41:49 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id b11sm663339lfi.292.2021.04.13.04.41.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Apr 2021 04:41:48 -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 v2 3/5] diff-merges: adapt -m to enable default diff format Date: Tue, 13 Apr 2021 14:41:16 +0300 Message-Id: <20210413114118.25693-4-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210413114118.25693-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210413114118.25693-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 66c8ba0cc6a0..9d19225b3ec9 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, "on")) + else if (!strcmp(optarg, "m") || !strcmp(optarg, "on")) return set_to_default; return NULL; } From patchwork Tue Apr 13 11:41:17 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12200289 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,URIBL_BLOCKED,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 B0240C43460 for ; Tue, 13 Apr 2021 11:41:56 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8B7636109D for ; Tue, 13 Apr 2021 11:41:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244879AbhDMLmP (ORCPT ); Tue, 13 Apr 2021 07:42:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231378AbhDMLmL (ORCPT ); Tue, 13 Apr 2021 07:42:11 -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 BCD46C06175F for ; Tue, 13 Apr 2021 04:41:51 -0700 (PDT) Received: by mail-lj1-x236.google.com with SMTP id c1so10713104ljd.7 for ; Tue, 13 Apr 2021 04:41:51 -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=YveX1xA2U6v9kpF3Y6Zyh/fa/bg9xhxKtnohkjSiDtU=; b=QWM59or+4gE6qse6g8LExHDMjdu8VdJLoshA9icCfxdNmWyT2tW4s4XnjZk/E71fas qkUMrReQXzUBu3yUXt2m1kx5O0YKQ4g0GR0VvJqkcKDcskf8lWmYMm5SR3lVcwAyRQbJ mRlmNRJnTlaaa7mtpOZZiGvrdCRcNF1nRSyy86KI+9DGYLVlSsSwGHmBtM3e/D4woGgm HDIQC+5vFknCT7NElQ1NVd6uF2eCQ4r12NCSkOqXZlq7P2O4pCSnlqA1HeYoCtuH0NKs wIUNr+Rj2ggW+CQBq1lD4KDXdheXaFgq3/NumsDExI+rh5tN2B6uA+mDJaNxT8TVvhys /HRA== 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=YveX1xA2U6v9kpF3Y6Zyh/fa/bg9xhxKtnohkjSiDtU=; b=es84ph2s4F8X9wnYxmOyuY4KlkG3bBJ9JsYUUEqlFvT5JvlAtL5C0dWTjLI2d5ovXi qQyhK9cZBdGjMltJNRimjugBL4th8Ik2If5eABvkV+lksZOg0nVBN8+PzPG1uPQgS99H UpkGkw5G8CueeI+MvWFkbsvsLHoKSGJvOj7VpqmkBDIZ22hN6THs3sISY8rltbt1tOmj qWrCV+u2JeJByydBmdR3MYs0o+qa8bRIWGttVGVTVq3gTv5AWS9XAfshL0kNENL0gsXA HHcDhmDg6vhzlenJOHSVWvUnNWAbC3QLcCoDzC7cDpQnWh90tJm54Xo14Z4erVu4k9vH K+lw== X-Gm-Message-State: AOAM530wnCQYaFxukJl2lrC+lxEo2LmO98yy+fj8yqZ3nAO9v9YFMfsu t3eroqGai6gyvQRRbEYK47M= X-Google-Smtp-Source: ABdhPJx7XKbAlcatywHUadQu10vvCwSI+niaAjp9ZBJRBfB1a5pqq69JvstAmW/M8aVEEAbeom3sPg== X-Received: by 2002:a05:651c:489:: with SMTP id s9mr17761731ljc.62.1618314110297; Tue, 13 Apr 2021 04:41:50 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id b11sm663339lfi.292.2021.04.13.04.41.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Apr 2021 04:41:49 -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 v2 4/5] diff-merges: introduce log.diffMerges config variable Date: Tue, 13 Apr 2021 14:41:17 +0300 Message-Id: <20210413114118.25693-5-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210413114118.25693-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210413114118.25693-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=on 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=on 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 9d19225b3ec9..f3a9daed7e05 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 26a7b4d19d4d..87def81699bf 100755 --- a/t/t4013-diff-various.sh +++ b/t/t4013-diff-various.sh @@ -460,6 +460,29 @@ test_expect_success 'log --diff-merges=on 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=on 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 Tue Apr 13 11:41:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Organov X-Patchwork-Id: 12200287 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 67C28C43461 for ; Tue, 13 Apr 2021 11:41:57 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4AC676109D for ; Tue, 13 Apr 2021 11:41:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245001AbhDMLmP (ORCPT ); Tue, 13 Apr 2021 07:42:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50268 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240871AbhDMLmN (ORCPT ); Tue, 13 Apr 2021 07:42:13 -0400 Received: from mail-lf1-x12e.google.com (mail-lf1-x12e.google.com [IPv6:2a00:1450:4864:20::12e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1DE60C06138C for ; Tue, 13 Apr 2021 04:41:53 -0700 (PDT) Received: by mail-lf1-x12e.google.com with SMTP id f17so19750968lfu.7 for ; Tue, 13 Apr 2021 04:41:53 -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=Wn9QqDpx/Z77mFW+plPu8eUKAUu6dpdKxRaYmz5Jji4=; b=Hg7okFOp/3rUPLYTrZndTBzXBNEf6LskEWLhZD/th3cBCpFLNSu7kmtfgZoA/aNW2s DFx17qT2z/DkPH/CctTwBP26fkbHlOoqF8NAxrBOseOqDSIti/llsccRTpe6XcoFDzlJ g7B6wcPq87y1O7IODyU1gzXRnLhHUGAO6VzKHg8XWWYwuJaotarFyip36Ff7Dr0lFybZ 9EzwUbx46t+eCeUSeuuPpt2fviSOc3aNhpeC2kNcTabYVtlOlnYqqIeNyxazq2hBAQZA YZv8nC+ecr07/0erLTH0+2gzU5wa+NTw0/QHPsMDMwT+LpKZWghT+gcmsqEIFytGiRzR sZRA== 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=Wn9QqDpx/Z77mFW+plPu8eUKAUu6dpdKxRaYmz5Jji4=; b=j6e6I0OYRKq1Bd3PnUBo4bK27p8UReE+PdQX51HuksND22GdrfQ52bnN6uYOZqBbQG JSlNDf4u+77YjzJ6dEgYQDkqMeeaxlcGYqXwUa0VF8C1/bs/MoKpWy+RCNRTwfvm51mF cUBXiTsKO1bKu/ig8Lj1aggGrGejPK+x5ZssK6QGvJW71Cv+V0l6bdZUyFDqsUJyCsOj QFHT06OnRiY2YAGS/m9hoZzb00oLfcJ/Y2pRSmdJM1So6886C+/tQxMm5Snk/Y0YmhIb DOG5cgBVXt7JPDbs62ExjAFuJiRX+RmbnHSWXq5eIpoFnqUiRRKu1LeCHKWv2/PFncqb fAkg== X-Gm-Message-State: AOAM532GzsPw/XCmijCQ+CAzgCv6SOUgS+Yf2wmmgml06lUep+d0ey7g T4PUhiEXx4ejz2AvHhNpRwE= X-Google-Smtp-Source: ABdhPJwJVUzq8pvFvLCX8Yz4eGTbIpQ3GVC7HDMuJ8R7TJPPL0/y4NWgjegiS8H0uGdXP9xiRwsqag== X-Received: by 2002:ac2:5c04:: with SMTP id r4mr15225002lfp.387.1618314111687; Tue, 13 Apr 2021 04:41:51 -0700 (PDT) Received: from osv.localdomain ([89.175.180.246]) by smtp.gmail.com with ESMTPSA id b11sm663339lfi.292.2021.04.13.04.41.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 13 Apr 2021 04:41:50 -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 v2 5/5] doc/diff-options: document new --diff-merges features Date: Tue, 13 Apr 2021 14:41:18 +0300 Message-Id: <20210413114118.25693-6-sorganov@gmail.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20210413114118.25693-1-sorganov@gmail.com> References: <20210407225608.14611-1-sorganov@gmail.com> <20210413114118.25693-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=on 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..6d968b9012dc 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|on|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=on::: +--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:::