From patchwork Tue Mar 16 02:12:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141013 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.8 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 A97C7C43381 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 63BA564FB2 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231952AbhCPCNp (ORCPT ); Mon, 15 Mar 2021 22:13:45 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34176 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229883AbhCPCNe (ORCPT ); Mon, 15 Mar 2021 22:13:34 -0400 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D085C061756 for ; Mon, 15 Mar 2021 19:13:33 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id r15-20020a05600c35cfb029010e639ca09eso529139wmq.1 for ; Mon, 15 Mar 2021 19:13:33 -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=LHZ5sccKyIWVbuVnj3dt+dlBBvs3KmFFDHDTe3yxFs8=; b=D6/EubnoVI2q/uaixFfzgJ19C/jxGLLUzCspwfJ9bMXvU1LgBwkPOCX/xAG5HQnl8t DAgM9YR9Cld1ktQJmD8GKEyf+mWD16bszUEislMMz0tW3P/t19usPZFrv9IvmgKWOmj9 zSM4s01jDAixXy1QyajqgR7TZczcsec8gbW+vMIjFo+iG6p65yxqAfcx8ESFkKcRDJ0Z aflLSgEYxQKHb5AMFr3pcO0LoXFI72/XOyepiEQlZbrHuo74yVj5TfNwecpb8sxbdh50 l6uKs9/p8Gm9FHuFc6SDq9Qxow7FCrQAR7SSjqAF+AXLrEb4fnvLXdYDGKIMLPPGbXAB jc+A== 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=LHZ5sccKyIWVbuVnj3dt+dlBBvs3KmFFDHDTe3yxFs8=; b=bbVUqbjNX6oEOV1Hb46SZiTRF8AreBo4kE2yGQn/OBv/r8eRH5ClaPpcSw2T15yhmz Awq7KyV23rHtzoaGYSOMPlHRxvl22VfmVu2JLk5nxBNmKDOenMHSCBTja5SVItWGq8lB BrTqPLQDCtCGJ2uWgeNIITf4bPSttQDZoJmO+Gswdd87lUxbIw4UgwJ8VHOeELjdMhrK Uhgl4C25hlryvAjPLxePGFp/LtEcIEzphxwPdrCyOF79TxalW5VnWke+r4DcULAkLoUp zvRwAmrj9OlkI1bgAU7VsC7jfrvMLR+L6IjODdJeLzvrNaOuf5dIAtDOte1rCAI3ZNay 8zkg== X-Gm-Message-State: AOAM531O3Fcro3/qtRWKpaQebGJVGqllfBnTspd+CialA9HAdJtpUvMy iIqvhWG38guXUCJ/SkJLS0mT7+W8ZCasPg== X-Google-Smtp-Source: ABdhPJyHCIB+1zxhKTPFTMAKzT29vKac1wO0/pq0M4NlsquI/L1C/RsOOp6M+l1LQCcODYJzyGXPWw== X-Received: by 2002:a1c:7fcd:: with SMTP id a196mr2284260wmd.180.1615860812036; Mon, 15 Mar 2021 19:13:32 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:31 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 01/29] diff.c: remove redundant canon_mode() call Date: Tue, 16 Mar 2021 03:12:44 +0100 Message-Id: <20210316021312.13927-2-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Remove a call to canon_mode() from fill_filespec(). This has been redundant since the tree-walk.c API supplies it pre-canonicalized since 7146e66f086 (tree-walk: finally switch over tree descriptors to contain a pre-parsed entry, 2014-02-06). This call to the predecessor of canon_mode() was added back in 4130b995719 ([PATCH] Diff updates to express type changes, 2005-05-26). This was the only such call in the codebase. The rest are all either one of these sorts of forms: canon_mode(st.st_mode); /* a stat(2) struct */ canon_mode(S_IFREG | 0644) /* A compile-time literal */ Signed-off-by: Ævar Arnfjörð Bjarmason --- diff.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/diff.c b/diff.c index 6956f5e335c..bf46e6a4d8c 100644 --- a/diff.c +++ b/diff.c @@ -3846,7 +3846,7 @@ void fill_filespec(struct diff_filespec *spec, const struct object_id *oid, int oid_valid, unsigned short mode) { if (mode) { - spec->mode = canon_mode(mode); + spec->mode = mode; oidcpy(&spec->oid, oid); spec->oid_valid = oid_valid; } From patchwork Tue Mar 16 02:12:45 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141003 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.8 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 7BA04C433DB for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2101A65011 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231430AbhCPCNo (ORCPT ); Mon, 15 Mar 2021 22:13:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34178 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229937AbhCPCNe (ORCPT ); Mon, 15 Mar 2021 22:13:34 -0400 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 58567C06174A for ; Mon, 15 Mar 2021 19:13:34 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id g25so9210772wmh.0 for ; Mon, 15 Mar 2021 19:13:34 -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=203EGFNjtbQwVpgUWcr8qhue7eTXdL6ELa6yPA7UK3s=; b=TzxF/teNbujjcKhb5bGswKui/0HQIa9/wMsjrYAEQvEhQUGEGMEm3qfDUV2c/WRVli RQLt93epNzZ2Lk/uELGi/BzP5meXJ6lfhQdgcjSlt0lvwzZl/kN/Uxa0YCIHZ6HmEWLX fEMhDy6zoi2Kc3mxB9H9CEEPH0A1ey24j9sXaRLhG/7McCdqhomH4d9uamIaPD5HY3y5 5DIDcUPvcdPNdsAKu+r4m6dWgEWhgybABb6hHYVG9mdgSQUFnjGLhvCmKYUXI8iWAXVc GLR/IwaBj0Eac08ud6MQA2km4h6e60A635bQpeXPqlqwOC9ZvReP6l08WUOMPDFPuewM moYA== 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=203EGFNjtbQwVpgUWcr8qhue7eTXdL6ELa6yPA7UK3s=; b=r0pgizpNMmM1yaRSfxS5HJJu6er6AgtrXVKpYMPXP4m4+grYj5MAp0TeBJaSkjkiqC Jy0ICLM4kif6G0wIsWdLDy3+P2bHJBi7m9cXMsjnJnTecAny3zWx96LDPE0EgCNP9F1C F1+EqVtuH6fxFkigr91aia9cHzFJWmaMcsTKPOc+VK9uz+i/ThOj1ipI3hwkv+qKdV1U 5S0gFlqTwSFUMPxglmU3kDTz41RnFC2KEFFmTXnqYozwC/UX00dPMAZPf2sqZ2OTpCDx htFSN9k16HPiwVh3hloNjmSDFTnUsJJRd2hcBTUChpWNrksPpxV4W3X+Sr1qzIx4klw8 n8SA== X-Gm-Message-State: AOAM531uWcWaEYrsg6zu0rmE7v7pWuRhZTL8DYsIR2rvNVQVrbmgx8mk /GHnF6U57d2rAiQeUT3sEQKZuoScnw7OdQ== X-Google-Smtp-Source: ABdhPJxx4efZoB+4u2wMzCDEpjBAvbIVi3QyYRsXTTsoEP98owvTDttvvAFBk4Ih53D4U3Jao2D3WQ== X-Received: by 2002:a1c:6a05:: with SMTP id f5mr2200739wmc.75.1615860812828; Mon, 15 Mar 2021 19:13:32 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:32 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 02/29] notes & match-trees: use name_entry's "pathlen" member Date: Tue, 16 Mar 2021 03:12:45 +0100 Message-Id: <20210316021312.13927-3-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change code that was doing a strlen() on the "path" from a name_entry struct to instead use the pathlen given to us by decode_tree_entry(). Signed-off-by: Ævar Arnfjörð Bjarmason --- match-trees.c | 7 +++---- notes.c | 4 ++-- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/match-trees.c b/match-trees.c index f6c194c1cca..1011357ad0c 100644 --- a/match-trees.c +++ b/match-trees.c @@ -197,9 +197,10 @@ static int splice_tree(const struct object_id *oid1, const char *prefix, while (desc.size) { const char *name; unsigned short mode; + int len = tree_entry_len(&desc.entry); tree_entry_extract(&desc, &name, &mode); - if (strlen(name) == toplen && + if (len == toplen && !memcmp(name, prefix, toplen)) { if (!S_ISDIR(mode)) die("entry %s in tree %s is not a tree", name, @@ -214,9 +215,7 @@ static int splice_tree(const struct object_id *oid1, const char *prefix, * - to discard the "const"; this is OK because we * know it points into our non-const "buf" */ - rewrite_here = (unsigned char *)(desc.entry.path + - strlen(desc.entry.path) + - 1); + rewrite_here = (unsigned char *)(name + len + 1); break; } update_tree_entry(&desc); diff --git a/notes.c b/notes.c index d5ac081e76d..0a5b4fa1dbb 100644 --- a/notes.c +++ b/notes.c @@ -413,7 +413,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree, while (tree_entry(&desc, &entry)) { unsigned char type; struct leaf_node *l; - size_t path_len = strlen(entry.path); + int path_len = entry.pathlen; if (path_len == 2 * (hashsz - prefix_len)) { /* This is potentially the remainder of the SHA-1 */ @@ -483,7 +483,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree, strbuf_addch(&non_note_path, *q++); strbuf_addch(&non_note_path, '/'); } - strbuf_addstr(&non_note_path, entry.path); + strbuf_add(&non_note_path, entry.path, path_len); add_non_note(t, strbuf_detach(&non_note_path, NULL), entry.mode, entry.oid.hash); } From patchwork Tue Mar 16 02:12:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141007 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.8 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 86061C433E9 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4BF1C6501D for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231985AbhCPCNq (ORCPT ); Mon, 15 Mar 2021 22:13:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34186 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229952AbhCPCNf (ORCPT ); Mon, 15 Mar 2021 22:13:35 -0400 Received: from mail-wm1-x32b.google.com (mail-wm1-x32b.google.com [IPv6:2a00:1450:4864:20::32b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 30005C06174A for ; Mon, 15 Mar 2021 19:13:35 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id p19so298222wmq.1 for ; Mon, 15 Mar 2021 19:13:35 -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=RxaQuxGuJTZzi1LlLL+4afGZBo2P7/482a+g5i2B/8o=; b=ZGQ5Qn4da/3rS3Dg2jdA+Y88Q2z5nl1dcwNlu7fvv4ptuLXBGwb7eWapFHvzKBo61G bkOVsj8MZOBj3Ad6DT5OfsZRMrfGcRjL0My469waOW58zHnIJwgq6uBVWKlNtZaXDMcm j5OuotIQlaischyr9N/AW7qyYke5gK+Uu4YJg1+o5sWM+1lGV9KLigAbryB+NONyJV3Y VWzbiXl/7N3g7LJOqrCOYwa+vMIXN6QvxOsMclYdxRFFvc/MnkDzcdtU+xS1X8utW2ls cAXi43DtCbEnWjJnrGQYN8O79LOTJR7Yge8ySh/xVtu0eoMGn5VtLAO9TqqUENV/TAKd PKAg== 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=RxaQuxGuJTZzi1LlLL+4afGZBo2P7/482a+g5i2B/8o=; b=O6CbPmGox6pyKVaUYfXCMugOV5MT+FY1QTliefMazgpVz9gj3apTTTKGPw+snZvbC2 MPA9LmL64sWNGTAh3pCqdc5I1oWPdjsnGRe/NZmCz+iuO6WZBJj45syhlISOjeywv2KF CEAmFUKdyDUwg1DkleiSNv0j4X3Aw9UV67jqrSsGSQzwY4Y8Zm5G044UR6o6vdxEwa8r d6gE8wSaCNbC6xzI8OmVwAx8flkvAZNDkXJbiy9TmbEwtXm6cNhndf0UE7GasXFa2W8n /C64h1GcOleDzal+r83MK8ttbGN0FrrBOzfzGvpxQQlC0o+wxD1wr9vHUy6aFygDXhTa Uc/g== X-Gm-Message-State: AOAM5339CYURfn5opTJnCkDEklLJcNEmkzz98BihDj6cjJzB2nlzE2oq cUcY5jaWrf9rofQ6UkCTc9bnt4WcFUiTGA== X-Google-Smtp-Source: ABdhPJxNrTfpsjPvPQ8x3HRfH2RNq4O21ZMO2HBcYFgHyEp2MKlwGtZ/R6FeODOsacV3RWJJNpNXyg== X-Received: by 2002:a1c:86:: with SMTP id 128mr2219962wma.41.1615860813613; Mon, 15 Mar 2021 19:13:33 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:33 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 03/29] cache.h: add a comment to object_type() Date: Tue, 16 Mar 2021 03:12:46 +0100 Message-Id: <20210316021312.13927-4-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a comment to the object_type() function to explain what it returns, and what the "mode" is in the "else" case. The object_type() function dates back to 4d1012c3709 (Fix rev-list when showing objects involving submodules, 2007-11-11). It's not immediately obvious to someone looking at its history and how it's come to be used. Despite what Linus noted in 4d1012c3709 (Fix rev-list when showing objects involving submodules, 2007-11-11) about wanting to move away from users of object_type() relying on S_ISLNK(mode) being true here we do currently rely on that. If this is changed to a condition to only return OBJ_BLOB on S_ISREG(mode) then t4008, t4023 and t7415 will have failing tests. Signed-off-by: Ævar Arnfjörð Bjarmason --- cache.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cache.h b/cache.h index c2f8a8eadf6..ae0c0bef5c2 100644 --- a/cache.h +++ b/cache.h @@ -451,11 +451,16 @@ enum object_type { OBJ_MAX }; +/* + * object_type() returns an object of a type that'll appear in a tree, + * so no OBJ_TAG is possible. This is mostly (and dates back to) + * consumers of the tree-walk.h API's "mode" field. + */ static inline enum object_type object_type(unsigned int mode) { return S_ISDIR(mode) ? OBJ_TREE : S_ISGITLINK(mode) ? OBJ_COMMIT : - OBJ_BLOB; + OBJ_BLOB; /* S_ISREG(mode) || S_ISLNK(mode) */ } /* Double-check local_repo_env below if you add to this list. */ From patchwork Tue Mar 16 02:12:47 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141015 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.8 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 E4BD5C433E6 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A377865029 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232220AbhCPCNq (ORCPT ); Mon, 15 Mar 2021 22:13:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34190 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230080AbhCPCNg (ORCPT ); Mon, 15 Mar 2021 22:13:36 -0400 Received: from mail-wr1-x42e.google.com (mail-wr1-x42e.google.com [IPv6:2a00:1450:4864:20::42e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09C71C06174A for ; Mon, 15 Mar 2021 19:13:36 -0700 (PDT) Received: by mail-wr1-x42e.google.com with SMTP id j18so6651938wra.2 for ; Mon, 15 Mar 2021 19:13:35 -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=aRg52qgd/pCwOEEZgfanBQRk62b4rbTbyMKhZOHKVlQ=; b=YxH9a6cpqEOSJD2QshxGzLe+fWoMJ0Qvd9p6MYfXH1ultdPIWHV61jtMsgalcAKygj 8H1HCkQ7Eq2V+SOBIma76o5bP6mDa3adkHDwmVEK0IpDqTVNTB4ApaqWyXsWv1Oedirs kyKuqU+EFGd3k/njaBmcrFWzF+3wlZ/nMzA9AuyLgSkGkOceAtuCXM3Lv1w7H9+NdZcc UlCqrac+3CAvxOb61vmyEpxURvQilPCpUT0+zksN30Z7+FfxQciNGBe32gUYNbBeWRGu 7WT+7/tZyd/nea0wPkR6fCIqCjFX22CzLWQbMd33EsBLO5knYYwiPnyDnhSFBbX0rY9g b71A== 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=aRg52qgd/pCwOEEZgfanBQRk62b4rbTbyMKhZOHKVlQ=; b=IQLVv829HFUvLF7B/IsSQu6SDp+JxYnwrQzRVkdEAn+Va9rarXogs+CuFD6hY0rY+Y QTr1HKKQDpQC/JJnVV0h1zn6cfLS1LuzOiOZUSw5fxQkMswnlzUkv965NQlGCDX7qoEg MOErQi5VQ7Dv4WMOTtbIs1ARWsayNbvCbFbTbraIpLFSFaXu51br/xM9HS7bjtCHxOoI GhEmPPz/R+qfsekMCWsh6H8JprO/bvxIla2SPtQLqn09DdOSzXVQm9sR0d8TsVItw6Hp +UwEbIN4F9ZNhrjlpFJLVrgXH4Nxf5Dx4mqFRF1tZaAWeQ0HYXt+9VWPYzFmq5iXVrpn 5sIg== X-Gm-Message-State: AOAM531teaV0jaW4YrcCh2jutMAquWGJPTmu7AS2GtV/A7JQ4Si9w0vJ p8Pj+zDboxk7elzTU6V3rGxpdZ16lejbBQ== X-Google-Smtp-Source: ABdhPJxLkD5noCViY1gpoBxNK3Ei95x4TSWkW8RDkonWD1+yUozMSB1ujOkHa5wNi3i6LsBFcDFJqw== X-Received: by 2002:adf:83c2:: with SMTP id 60mr2243140wre.386.1615860814556; Mon, 15 Mar 2021 19:13:34 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:33 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 04/29] tree-walk.h: add object_type member to name_entry Date: Tue, 16 Mar 2021 03:12:47 +0100 Message-Id: <20210316021312.13927-5-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Most users of the tree walking API don't care what the specific mode of an object in a tree is (e.g. if it's executable), they care if it's one of OBJ_{TREE,BLOB,COMMIT}. Let's add an "object_type" enum to the "name_entry" struct to help such callers. Ideally we'd have some subset of "enum object_type" here with just those three entries, so we could rely on the C compiler to exhaustively check our "switch" statements, but I don't know how to create such a enum subset without re-labeling OBJ_{TREE,BLOB,COMMIT} to e.g. "NE_OBJ_*" (an enum is just an int under the hood, so you can use such a struct with "OBJ_*", but the compiler will complain...). Signed-off-by: Ævar Arnfjörð Bjarmason --- tree-walk.c | 4 +++- tree-walk.h | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/tree-walk.c b/tree-walk.c index 2d6226d5f18..b210967b73b 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -47,7 +47,9 @@ static int decode_tree_entry(struct tree_desc *desc, const char *buf, unsigned l /* Initialize the descriptor entry */ desc->entry.path = path; - desc->entry.mode = canon_mode(mode); + mode = canon_mode(mode); + desc->entry.mode = mode; + desc->entry.object_type = object_type(mode); desc->entry.pathlen = len - 1; hashcpy(desc->entry.oid.hash, (const unsigned char *)path + len); diff --git a/tree-walk.h b/tree-walk.h index a5058469e9b..9f3825d2773 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -17,6 +17,8 @@ struct name_entry { const char *path; int pathlen; unsigned int mode; + /* simple 'mode': Only OBJ_{BLOB,TREE,COMMIT} */ + enum object_type object_type; }; /** From patchwork Tue Mar 16 02:12:48 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141009 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.8 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 B46EDC4332D for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 92C7B65026 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232347AbhCPCNr (ORCPT ); Mon, 15 Mar 2021 22:13:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34198 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230256AbhCPCNh (ORCPT ); Mon, 15 Mar 2021 22:13:37 -0400 Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D497FC06174A for ; Mon, 15 Mar 2021 19:13:36 -0700 (PDT) Received: by mail-wr1-x435.google.com with SMTP id x16so6661421wrn.4 for ; Mon, 15 Mar 2021 19:13:36 -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=xrxAfHEz8UqOPNpXxMrbByNxHWFJRX7BcxuDEpchG6U=; b=NvCQVm6JFfZa5cM2qhOoCy5t6V8ym85aKjtGPBRhHMHd7wm8/VYyUp/ibwr48vKLc9 4bzYTFuYCx3m/hz3Xy5Tp567v3eIPvatzuvaysERS6DEX75zxcZ0BTa5hcmIk6o5yQLy koCGVhrjBbwt5R6yCBWLOqkzRElFPHFL0XhsvD9K+yADYpeBxSV4RYuXFv5elau8fuxf ypl1E6qpA8YOdYxO0WwJx5sKWmN0X+6I1Gw9a69g3HtGCWWQrdtf0+8+lCxScFM+99hT Xpa3401cDuJdJKAj1ER7jzc44s4QnJHDJF4gikhiNuPSVr4MwdckuVHrrvLp+e4pDWd2 l5Nw== 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=xrxAfHEz8UqOPNpXxMrbByNxHWFJRX7BcxuDEpchG6U=; b=YpiXYwAZIuSHYFGPhzfwqdLhecWZwM4YdtY+x8WJRka+Af80Lac3G4OAvhkO3/qEml u0t3fzNs0QI4qg/pvIhaijk0qL1yAuMv6XVUWyqlA/U5fcpTCN81Mz7yZEU8lUwzWS3A 6xxdxGCGNdgKDJiBw/EopOZDW/w3KSjOc+aZIJ01oho7yxYtZm/Xjb+p9duWiUXsxXf7 BchfPfI+r9QeQ9Rlob4LGfe/9IsAK5JR0S8z/j1Vq8uaI6XBRFLpCXlzhDwHiuG9cOhd aHKdmlE/+SIOsnEjf17DfHe9asjh8hXrKks1Ntb8fI7RYwLTWQkHiW9bOkQuVOTL/b58 zQXw== X-Gm-Message-State: AOAM530rZV8JFIm+yzRzFVgse/Zqsak/gcni0cKf2QWqRV/m4F22XPhB 62Lcd4QeECvm3Aw3G4L/ne+gn85dpsLcsg== X-Google-Smtp-Source: ABdhPJyZc8Bp+XED49FbRZD+ynaie3eH7L3FWKC+e/wGwn6x/H4S2vJQIjgitsGRA5M+Fo4CRsk2/g== X-Received: by 2002:a5d:4b50:: with SMTP id w16mr2232510wrs.34.1615860815365; Mon, 15 Mar 2021 19:13:35 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:34 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 05/29] tree-walk.c: migrate to using new "object_type" field when possible Date: Tue, 16 Mar 2021 03:12:48 +0100 Message-Id: <20210316021312.13927-6-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Signed-off-by: Ævar Arnfjörð Bjarmason --- tree-walk.c | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/tree-walk.c b/tree-walk.c index b210967b73b..6e9161901d8 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -521,7 +521,7 @@ int traverse_trees(struct index_state *istate, if (!entry[i].path) continue; mask |= 1ul << i; - if (S_ISDIR(entry[i].mode)) + if (entry[i].object_type == OBJ_TREE) dirmask |= 1ul << i; e = &entry[i]; } @@ -892,8 +892,8 @@ static int match_entry(const struct pathspec_item *item, * nothing else (to handle 'submod/' and 'submod' * uniformly). */ - if (!S_ISDIR(entry->mode) && - (!S_ISGITLINK(entry->mode) || matchlen > pathlen + 1)) + if (entry->object_type != OBJ_TREE && + (entry->object_type != OBJ_COMMIT || matchlen > pathlen + 1)) return 0; } @@ -1038,7 +1038,7 @@ static enum interesting do_match(struct index_state *istate, ps->max_depth == -1) return all_entries_interesting; return within_depth(base->buf + base_offset, baselen, - !!S_ISDIR(entry->mode), + entry->object_type == OBJ_TREE, ps->max_depth) ? entry_interesting : entry_not_interesting; } @@ -1071,7 +1071,7 @@ static enum interesting do_match(struct index_state *istate, if (within_depth(base_str + matchlen + 1, baselen - matchlen - 1, - !!S_ISDIR(entry->mode), + entry->object_type == OBJ_TREE, ps->max_depth)) goto interesting; else @@ -1094,7 +1094,8 @@ static enum interesting do_match(struct index_state *istate, * Match all directories. We'll try to * match files later on. */ - if (ps->recursive && S_ISDIR(entry->mode)) + if (ps->recursive && + entry->object_type == OBJ_TREE) return entry_interesting; /* @@ -1105,7 +1106,7 @@ static enum interesting do_match(struct index_state *istate, * be performed in the submodule itself. */ if (ps->recurse_submodules && - S_ISGITLINK(entry->mode) && + entry->object_type == OBJ_COMMIT && !ps_strncmp(item, match + baselen, entry->path, item->nowildcard_len - baselen)) @@ -1154,7 +1155,8 @@ static enum interesting do_match(struct index_state *istate, * character. More accurate matching can then * be performed in the submodule itself. */ - if (ps->recurse_submodules && S_ISGITLINK(entry->mode) && + if (ps->recurse_submodules && + entry->object_type == OBJ_COMMIT && !ps_strncmp(item, match, base->buf + base_offset, item->nowildcard_len)) { strbuf_setlen(base, base_offset + baselen); @@ -1170,7 +1172,7 @@ static enum interesting do_match(struct index_state *istate, * in future, see * https://lore.kernel.org/git/7vmxo5l2g4.fsf@alter.siamese.dyndns.org/ */ - if (ps->recursive && S_ISDIR(entry->mode)) + if (ps->recursive && entry->object_type == OBJ_TREE) return entry_interesting; continue; interesting: @@ -1193,7 +1195,7 @@ static enum interesting do_match(struct index_state *istate, * can probably return all_entries_interesting or * all_entries_not_interesting here if matched. */ - if (S_ISDIR(entry->mode)) + if (entry->object_type == OBJ_TREE) return entry_interesting; strbuf_add(base, entry->path, pathlen); @@ -1269,7 +1271,7 @@ enum interesting tree_entry_interesting(struct index_state *istate, return positive; /* #15, #19 */ - if (S_ISDIR(entry->mode) && + if (entry->object_type == OBJ_TREE && positive >= entry_interesting && negative == entry_interesting) return entry_interesting; From patchwork Tue Mar 16 02:12:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141011 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.8 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 AB428C4332B for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7BD5D65025 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232557AbhCPCNr (ORCPT ); Mon, 15 Mar 2021 22:13:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34200 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230269AbhCPCNi (ORCPT ); Mon, 15 Mar 2021 22:13:38 -0400 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D654CC06174A for ; Mon, 15 Mar 2021 19:13:37 -0700 (PDT) Received: by mail-wr1-x42f.google.com with SMTP id v15so9672728wrx.4 for ; Mon, 15 Mar 2021 19:13:37 -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=+pRDdvQFgzHS7T+Ez5Q7zJSAOGevmUdSxWo3J7grkwU=; b=OAcYt1v/tUPYxeFWPsJKgrZnpkcciaVv7sxoAZGVjElyya6+rxcFLu0SRjJUM6Gg78 zYqqDKDVp2aUm8ok4iBoy8HAnlwUVFcE9LUJnLMY2iMIJjqDez42AVLCzdeoVWNnMLbK TX6AI/iUU52dWO5mZLFnBj7Y7Utgt5e72bKRbp5gsuzcHqqN2P8WywWsPDnIjAFbVKcj 2papGeZSgTnCJsdzR3n73+pRdX2QhYsrdaCAY9ip4EJ7dGVpFIR2vPniVE7E8H0pcCg+ tE/oce9jMjSnbvTrbOdlojgOF4Lkx7EEDFluVzaBOvv9f4AcxZBngFdq8ir2IR7C9B2y eVfw== 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=+pRDdvQFgzHS7T+Ez5Q7zJSAOGevmUdSxWo3J7grkwU=; b=jtF1p4h7/fjqpN79rLrIewR9GYFjNgEXhUSQ44IphjSm0eqonCAEoPLwYYREh2TKrh PDuYNxoH/cZ034Xqa/2SNOemHy/dpxPWuDM3QEr0xEKXs5LRAbeW0JDN1BiaQPkE8iEL EEIW5LQTl3zAgRc0rtW7QjBV4YYBJH0Ltp0IbEn3tzMxfdGNnsRfjDvKZiqmiEsa1KYn QwrBhPs0lXw8Cb1x2zT4rEBUN2kaIwBo/PtpkFDz/mqyE6uJXHUHUFcip29gATlCYIK3 s0Bh5zkqrTXeNgFxGl0kb3SVULKoIks6vYo2n/+T39D3crs82/XIxe+q0mWrvQzRbXtI d5Kw== X-Gm-Message-State: AOAM533o2i8nYTosbwGq9WGP7d3xgZ7frGfFLSKsS8vwh2BfuyJwK33t nqc5jTh7aVX5WnB5CGyU2Aqb8Cc3AIvG2Q== X-Google-Smtp-Source: ABdhPJwpF4dYo00KETKjHJjnEJZ8KsQN/EDzqUj/xDxy7NFa2Z9YhO0auc1o3aQCqv6XpiNG+Eiwjg== X-Received: by 2002:adf:ea8b:: with SMTP id s11mr2338009wrm.413.1615860816255; Mon, 15 Mar 2021 19:13:36 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:35 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 06/29] cache.h: have base_name_compare() take "is tree?", not "mode" Date: Tue, 16 Mar 2021 03:12:49 +0100 Message-Id: <20210316021312.13927-7-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change the base_name_compare() API and the related df_name_compare() function to take a boolean argument indicating whether the entry is a tree or not, instead of having them call S_ISDIR(mode) on their own. This makes use of the new "object_type" field in the "name_entry". The API being modified here was originally added way back in 958ba6c96eb (Introduce "base_name_compare()" helper function, 2005-05-20). Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/fast-import.c | 8 ++++---- builtin/mktree.c | 4 ++-- cache.h | 4 ++-- combine-diff.c | 8 +++++--- match-trees.c | 6 ++++-- merge-ort.c | 4 ++-- merge-recursive.c | 6 +++--- read-cache.c | 16 ++++++++-------- tree-diff.c | 7 +++++-- unpack-trees.c | 15 ++++++++------- 10 files changed, 43 insertions(+), 35 deletions(-) diff --git a/builtin/fast-import.c b/builtin/fast-import.c index dd4d09ceceb..ce4613c1595 100644 --- a/builtin/fast-import.c +++ b/builtin/fast-import.c @@ -1288,8 +1288,8 @@ static int tecmp0 (const void *_a, const void *_b) struct tree_entry *a = *((struct tree_entry**)_a); struct tree_entry *b = *((struct tree_entry**)_b); return base_name_compare( - a->name->str_dat, a->name->str_len, a->versions[0].mode, - b->name->str_dat, b->name->str_len, b->versions[0].mode); + a->name->str_dat, a->name->str_len, 1, + b->name->str_dat, b->name->str_len, 1); } static int tecmp1 (const void *_a, const void *_b) @@ -1297,8 +1297,8 @@ static int tecmp1 (const void *_a, const void *_b) struct tree_entry *a = *((struct tree_entry**)_a); struct tree_entry *b = *((struct tree_entry**)_b); return base_name_compare( - a->name->str_dat, a->name->str_len, a->versions[1].mode, - b->name->str_dat, b->name->str_len, b->versions[1].mode); + a->name->str_dat, a->name->str_len, 1, + b->name->str_dat, b->name->str_len, 1); } static void mktree(struct tree_content *t, int v, struct strbuf *b) diff --git a/builtin/mktree.c b/builtin/mktree.c index 891991b00d6..2c1973229ac 100644 --- a/builtin/mktree.c +++ b/builtin/mktree.c @@ -37,8 +37,8 @@ static int ent_compare(const void *a_, const void *b_) { struct treeent *a = *(struct treeent **)a_; struct treeent *b = *(struct treeent **)b_; - return base_name_compare(a->name, a->len, a->mode, - b->name, b->len, b->mode); + return base_name_compare(a->name, a->len, S_ISDIR(a->mode), + b->name, b->len, S_ISDIR(b->mode)); } static void write_tree(struct object_id *oid) diff --git a/cache.h b/cache.h index ae0c0bef5c2..e38b1e1688c 100644 --- a/cache.h +++ b/cache.h @@ -1506,8 +1506,8 @@ int repo_interpret_branch_name(struct repository *r, int validate_headref(const char *ref); -int base_name_compare(const char *name1, int len1, int mode1, const char *name2, int len2, int mode2); -int df_name_compare(const char *name1, int len1, int mode1, const char *name2, int len2, int mode2); +int base_name_compare(const char *name1, int len1, int istree1, const char *name2, int len2, int istree2); +int df_name_compare(const char *name1, int len1, int istree1, const char *name2, int len2, int istree2); int name_compare(const char *name1, size_t len1, const char *name2, size_t len2); int cache_name_stage_compare(const char *name1, int len1, int stage1, const char *name2, int len2, int stage2); diff --git a/combine-diff.c b/combine-diff.c index 9228aebc16b..ad7058a6f5d 100644 --- a/combine-diff.c +++ b/combine-diff.c @@ -16,11 +16,13 @@ static int compare_paths(const struct combine_diff_path *one, const struct diff_filespec *two) { - if (!S_ISDIR(one->mode) && !S_ISDIR(two->mode)) + int istree_one = S_ISDIR(one->mode); + int istree_two = S_ISDIR(two->mode); + if (!istree_one && !istree_two) return strcmp(one->path, two->path); - return base_name_compare(one->path, strlen(one->path), one->mode, - two->path, strlen(two->path), two->mode); + return base_name_compare(one->path, strlen(one->path), istree_one, + two->path, strlen(two->path), istree_two); } static int filename_changed(char status) diff --git a/match-trees.c b/match-trees.c index 1011357ad0c..a28c19a62a5 100644 --- a/match-trees.c +++ b/match-trees.c @@ -67,8 +67,10 @@ static void *fill_tree_desc_strict(struct tree_desc *desc, static int base_name_entries_compare(const struct name_entry *a, const struct name_entry *b) { - return base_name_compare(a->path, tree_entry_len(a), a->mode, - b->path, tree_entry_len(b), b->mode); + int istree_a = (a->object_type == OBJ_TREE); + int istree_b = (b->object_type == OBJ_TREE); + return base_name_compare(a->path, tree_entry_len(a), istree_a, + b->path, tree_entry_len(b), istree_b); } /* diff --git a/merge-ort.c b/merge-ort.c index 603d30c5217..4075d13aaab 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -2390,8 +2390,8 @@ static int tree_entry_order(const void *a_, const void *b_) const struct merged_info *ami = a->util; const struct merged_info *bmi = b->util; - return base_name_compare(a->string, strlen(a->string), ami->result.mode, - b->string, strlen(b->string), bmi->result.mode); + return base_name_compare(a->string, strlen(a->string), S_ISDIR(ami->result.mode), + b->string, strlen(b->string), S_ISDIR(bmi->result.mode)); } static void write_tree(struct object_id *result_oid, diff --git a/merge-recursive.c b/merge-recursive.c index 3d9207455b3..1c9b08695a3 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -554,12 +554,12 @@ static int string_list_df_name_compare(const char *one, const char *two) * * To achieve this, we sort with df_name_compare and provide * the mode S_IFDIR so that D/F conflicts will sort correctly. - * We use the mode S_IFDIR for everything else for simplicity, + * We say we have a directory for everything else for simplicity, * since in other cases any changes in their order due to * sorting cause no problems for us. */ - int cmp = df_name_compare(one, onelen, S_IFDIR, - two, twolen, S_IFDIR); + int cmp = df_name_compare(one, onelen, 1, two, twolen, 1); + /* * Now that 'foo' and 'foo/bar' compare equal, we have to make sure * that 'foo' comes before 'foo/bar'. diff --git a/read-cache.c b/read-cache.c index 1e9a50c6c73..4257fbd8a08 100644 --- a/read-cache.c +++ b/read-cache.c @@ -462,8 +462,8 @@ int ie_modified(struct index_state *istate, return 0; } -int base_name_compare(const char *name1, int len1, int mode1, - const char *name2, int len2, int mode2) +int base_name_compare(const char *name1, int len1, int istree1, + const char *name2, int len2, int istree2) { unsigned char c1, c2; int len = len1 < len2 ? len1 : len2; @@ -474,9 +474,9 @@ int base_name_compare(const char *name1, int len1, int mode1, return cmp; c1 = name1[len]; c2 = name2[len]; - if (!c1 && S_ISDIR(mode1)) + if (!c1 && istree1) c1 = '/'; - if (!c2 && S_ISDIR(mode2)) + if (!c2 && istree2) c2 = '/'; return (c1 < c2) ? -1 : (c1 > c2) ? 1 : 0; } @@ -491,8 +491,8 @@ int base_name_compare(const char *name1, int len1, int mode1, * This is used by routines that want to traverse the git namespace * but then handle conflicting entries together when possible. */ -int df_name_compare(const char *name1, int len1, int mode1, - const char *name2, int len2, int mode2) +int df_name_compare(const char *name1, int len1, int istree1, + const char *name2, int len2, int istree2) { int len = len1 < len2 ? len1 : len2, cmp; unsigned char c1, c2; @@ -504,10 +504,10 @@ int df_name_compare(const char *name1, int len1, int mode1, if (len1 == len2) return 0; c1 = name1[len]; - if (!c1 && S_ISDIR(mode1)) + if (!c1 && istree1) c1 = '/'; c2 = name2[len]; - if (!c2 && S_ISDIR(mode2)) + if (!c2 && istree2) c2 = '/'; if (c1 == '/' && !c2) return 0; diff --git a/tree-diff.c b/tree-diff.c index 7cebbb327e2..6ec180331fb 100644 --- a/tree-diff.c +++ b/tree-diff.c @@ -50,6 +50,7 @@ static int tree_entry_pathcmp(struct tree_desc *t1, struct tree_desc *t2) { struct name_entry *e1, *e2; int cmp; + int istree_e1, istree_e2; /* empty descriptors sort after valid tree entries */ if (!t1->size) @@ -58,9 +59,11 @@ static int tree_entry_pathcmp(struct tree_desc *t1, struct tree_desc *t2) return -1; e1 = &t1->entry; + istree_e1 = (e1->object_type == OBJ_TREE); e2 = &t2->entry; - cmp = base_name_compare(e1->path, tree_entry_len(e1), e1->mode, - e2->path, tree_entry_len(e2), e2->mode); + istree_e2 = (e2->object_type == OBJ_TREE); + cmp = base_name_compare(e1->path, tree_entry_len(e1), istree_e1, + e2->path, tree_entry_len(e2), istree_e2); return cmp; } diff --git a/unpack-trees.c b/unpack-trees.c index eb8fcda31ba..d9d573df986 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -925,7 +925,7 @@ static int traverse_trees_recursive(int n, unsigned long dirmask, static int do_compare_entry_piecewise(const struct cache_entry *ce, const struct traverse_info *info, const char *name, size_t namelen, - unsigned mode) + unsigned istree) { int pathlen, ce_len; const char *ce_name; @@ -933,7 +933,7 @@ static int do_compare_entry_piecewise(const struct cache_entry *ce, if (info->prev) { int cmp = do_compare_entry_piecewise(ce, info->prev, info->name, info->namelen, - info->mode); + S_ISDIR(info->mode)); if (cmp) return cmp; } @@ -947,13 +947,13 @@ static int do_compare_entry_piecewise(const struct cache_entry *ce, ce_len -= pathlen; ce_name = ce->name + pathlen; - return df_name_compare(ce_name, ce_len, S_IFREG, name, namelen, mode); + return df_name_compare(ce_name, ce_len, 0, name, namelen, istree); } static int do_compare_entry(const struct cache_entry *ce, const struct traverse_info *info, const char *name, size_t namelen, - unsigned mode) + unsigned istree) { int pathlen, ce_len; const char *ce_name; @@ -965,7 +965,7 @@ static int do_compare_entry(const struct cache_entry *ce, * it is quicker to use the precomputed version. */ if (!info->traverse_path) - return do_compare_entry_piecewise(ce, info, name, namelen, mode); + return do_compare_entry_piecewise(ce, info, name, namelen, istree); cmp = strncmp(ce->name, info->traverse_path, info->pathlen); if (cmp) @@ -980,12 +980,13 @@ static int do_compare_entry(const struct cache_entry *ce, ce_len -= pathlen; ce_name = ce->name + pathlen; - return df_name_compare(ce_name, ce_len, S_IFREG, name, namelen, mode); + return df_name_compare(ce_name, ce_len, 0, name, namelen, istree); } static int compare_entry(const struct cache_entry *ce, const struct traverse_info *info, const struct name_entry *n) { - int cmp = do_compare_entry(ce, info, n->path, n->pathlen, n->mode); + int istree = (n->object_type == OBJ_TREE); + int cmp = do_compare_entry(ce, info, n->path, n->pathlen, istree); if (cmp) return cmp; From patchwork Tue Mar 16 02:12:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141019 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.8 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 0F329C4332E for ; Tue, 16 Mar 2021 02:14:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DE65765011 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233902AbhCPCNs (ORCPT ); Mon, 15 Mar 2021 22:13:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34208 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230363AbhCPCNj (ORCPT ); Mon, 15 Mar 2021 22:13:39 -0400 Received: from mail-wr1-x433.google.com (mail-wr1-x433.google.com [IPv6:2a00:1450:4864:20::433]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36DC4C06174A for ; Mon, 15 Mar 2021 19:13:39 -0700 (PDT) Received: by mail-wr1-x433.google.com with SMTP id t9so6649884wrn.11 for ; Mon, 15 Mar 2021 19:13:39 -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=hsTLM4dEWc+SVLRmC6+XrIVizPNiARELPTHr2aK+NRA=; b=XgUpi6ZlhEiwgRhgdqL8zN3tJPvUZfnffgxqIzMY64Au4W+6XUzgEiMVZ5IPB6Od0o +DuqrM/812zWW/ormTz4/S8fFQITfkjXC66WLG6fGB6tlYAZ8t2Y7740BK+/M/rTGn2Y AkRNwOXTcN8VnGCAlymj4e/YJENy1wbD0SvAR/3uKF37pkE43/bBo3a26B36l44Y8Egz tEcmbFc1N70i8vihkVF5h9GcRjnqVIq9J4xVMNtwRpJoUYUcXDjI9wosIxUQ+OsKpQE6 Exu+4jmGgFAUAgL7GawmaShFOlkZ+aPMD5RGw5Z60VKZcCOKaMZcvfBxyzJPSldyFNui Fu8w== 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=hsTLM4dEWc+SVLRmC6+XrIVizPNiARELPTHr2aK+NRA=; b=BF9xy+XoM2pe7b4zDgkGKLOboLV8hGkfIMwK2Bc9yx+RuZ4upUwQwm5+QWwYl+qyJh 7wVUBb8acCqNfeVGBvqrvPN2tRh4VcQ7rKUS6MlIKs7p67u7LDH/HhgztAFCiBPik91a 0htmptixTtWA9ErvT+2RJ1/UrW2pSja0vEk7sW72oQwG/7KKF77jR8mZTCGK6+CxVZ2a yGvv/sw6R2f6LCymSwY5lCyRoEXfrHAp/OnnnfU25X8K4dBom7Y6CG1IaSVXFsLJHRQn E3mOJXwbLDdB9xc+Zhcq9R/DbiMQrFy2Q1dR2tYqoYvnYXBovB/vrGrDhdQXAYZv+zgQ X0Tw== X-Gm-Message-State: AOAM532gW9ApoyIr9xoq696Vitg8t/cjlyywZjfo3WD3vGzFbE9NEDqS a69JQ8SRgrdEnVz3U0Z/iqFlCm7qAhcLbA== X-Google-Smtp-Source: ABdhPJy2HexLs3Wk3CFZ+Yrcwx4JPIsRCo26bvJ93N4kKO0klr8dSqKQHKULNu8OW4KZKuQU7A8y7g== X-Received: by 2002:a5d:6a4c:: with SMTP id t12mr2188004wrw.289.1615860817215; Mon, 15 Mar 2021 19:13:37 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:36 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 07/29] tree-walk.h users: switch object_type(...) to new .object_type Date: Tue, 16 Mar 2021 03:12:50 +0100 Message-Id: <20210316021312.13927-8-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change uses of object_type(entry.mode) to use the new entry.object_type field. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/pack-objects.c | 2 +- http-push.c | 6 ++++-- pack-bitmap-write.c | 8 +++++--- revision.c | 12 ++++++++---- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index 6d62aaf59a0..d3ba1d4a4a6 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -1534,7 +1534,7 @@ static void add_pbase_object(struct tree_desc *tree, return; if (name[cmplen] != '/') { add_object_entry(&entry.oid, - object_type(entry.mode), + entry.object_type, fullname, 1); return; } diff --git a/http-push.c b/http-push.c index 6a4a43e07f2..234b79a5dba 100644 --- a/http-push.c +++ b/http-push.c @@ -1314,7 +1314,7 @@ static struct object_list **process_tree(struct tree *tree, init_tree_desc(&desc, tree->buffer, tree->size); while (tree_entry(&desc, &entry)) - switch (object_type(entry.mode)) { + switch (entry.object_type) { case OBJ_TREE: p = process_tree(lookup_tree(the_repository, &entry.oid), p); @@ -1323,9 +1323,11 @@ static struct object_list **process_tree(struct tree *tree, p = process_blob(lookup_blob(the_repository, &entry.oid), p); break; - default: + case OBJ_COMMIT: /* Subproject commit - not in this repository */ break; + default: + BUG("unreachable"); } free_tree_buffer(tree); diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c index 88d9e696a54..ac32bf2242c 100644 --- a/pack-bitmap-write.c +++ b/pack-bitmap-write.c @@ -353,7 +353,7 @@ static void fill_bitmap_tree(struct bitmap *bitmap, init_tree_desc(&desc, tree->buffer, tree->size); while (tree_entry(&desc, &entry)) { - switch (object_type(entry.mode)) { + switch (entry.object_type) { case OBJ_TREE: fill_bitmap_tree(bitmap, lookup_tree(the_repository, &entry.oid)); @@ -361,9 +361,11 @@ static void fill_bitmap_tree(struct bitmap *bitmap, case OBJ_BLOB: bitmap_set(bitmap, find_object_pos(&entry.oid)); break; - default: - /* Gitlink, etc; not reachable */ + case OBJ_COMMIT: + /* submodule commit - not in this repository */ break; + default: + BUG("unreachable"); } } diff --git a/revision.c b/revision.c index b78733f5089..1db4e4e90a2 100644 --- a/revision.c +++ b/revision.c @@ -72,16 +72,18 @@ static void mark_tree_contents_uninteresting(struct repository *r, init_tree_desc(&desc, tree->buffer, tree->size); while (tree_entry(&desc, &entry)) { - switch (object_type(entry.mode)) { + switch (entry.object_type) { case OBJ_TREE: mark_tree_uninteresting(r, lookup_tree(r, &entry.oid)); break; case OBJ_BLOB: mark_blob_uninteresting(lookup_blob(r, &entry.oid)); break; - default: + case OBJ_COMMIT: /* Subproject commit - not in this repository */ break; + default: + BUG("unreachable"); } } @@ -179,7 +181,7 @@ static void add_children_by_path(struct repository *r, init_tree_desc(&desc, tree->buffer, tree->size); while (tree_entry(&desc, &entry)) { - switch (object_type(entry.mode)) { + switch (entry.object_type) { case OBJ_TREE: paths_and_oids_insert(map, entry.path, &entry.oid); @@ -196,9 +198,11 @@ static void add_children_by_path(struct repository *r, child->object.flags |= UNINTERESTING; } break; - default: + case OBJ_COMMIT: /* Subproject commit - not in this repository */ break; + default: + BUG("unreachable"); } } From patchwork Tue Mar 16 02:12:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141023 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.8 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 28FB7C43332 for ; Tue, 16 Mar 2021 02:14:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 032BD65020 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232694AbhCPCNr (ORCPT ); Mon, 15 Mar 2021 22:13:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34210 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230405AbhCPCNj (ORCPT ); Mon, 15 Mar 2021 22:13:39 -0400 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C508C061756 for ; Mon, 15 Mar 2021 19:13:39 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id l11so9665920wrp.7 for ; Mon, 15 Mar 2021 19:13:39 -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=dOdkXA3KKD/sGvFKEkh2mvoW3ZAmihSjtFIzkl6Ppws=; b=JES6W/0igTs06v82L6mp35yFb5lUkjprlA9pKHYo+1v5xTFWxHrQy5mt6eHMUlznrb VPev82BMwuGkxRugAFeD7R7wQku/+GbTwzETU0n6lsPXPsYudtCPPF/m/SU2QuxMdzJY jY9ijHfUaflPi87O2/qf+HNjqSstOobrDo85rPCNKJ904DgVMcphffnn8vOkl724ZKhQ Go8nhjabFxTahCW4fza4OCc1s5Bc/fn5KiqG3QUL9witmVdR/7L2WuamCaIhnN5YR12G 6T6GwbppN668+KD7fWeo1+ysNnGLOGwSOol1LM8H5bEjhdKAD3dEIoNyOMabIGDRWQD8 Wwfg== 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=dOdkXA3KKD/sGvFKEkh2mvoW3ZAmihSjtFIzkl6Ppws=; b=K5eFnIdBNX28/Bwkfb19x05alJPj+cSd5t3PQmXXxV6atect7fOYX/JTo5jBVCPc6X SQ1x7JrYCREBLhHyyQKYF1ORCDSQlaOv5Ov/Yzq3iN8OcO28l4PX4MYwRbCJAMePkQBK 4lTzzZSmmihuIAQTr/Y7eKVKHiWGUqPjE5dl71FNHo8xOQeond6GbS13aXo+fummT7z9 zQg/NdwrmwCiUPgbvot6P6Lygl4v/lAhvRD6S/b7XyLHAXThCxYCcjCC4KgLASIDydhq ALz8X4hDxIltPxfTSt9SydcqZpKJWtOS14jn9d3kjhhyxuqOH7OPHvey/EV53AW4w7l0 WS5g== X-Gm-Message-State: AOAM532SHUKmhZgFt8HPieergtaCHT7MBlj+QwJpP6qia7tzzOQ7ZOcv ZEx7FemJRfh5CqEq/URL5UxEUVU/wXvrnQ== X-Google-Smtp-Source: ABdhPJySacIeUU/TWDJcXnfxn5doMXQs3mdfhkAFQHD+aipnoOkd0nz0LE6CaEY9gySji3G70Q9Ubw== X-Received: by 2002:adf:ce8a:: with SMTP id r10mr2276117wrn.17.1615860817928; Mon, 15 Mar 2021 19:13:37 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:37 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 08/29] tree.h: format argument lists of read_tree_recursive() users Date: Tue, 16 Mar 2021 03:12:51 +0100 Message-Id: <20210316021312.13927-9-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In preparation for adding a new argument to read_tree_fn_t re-indent and format the argument list of read_tree_recursive() callbacks, and the relevant functions they call. This is a whitespace-only change to make reading subsequent commits easier. I'll be adding a new argument on the "mode" line, so leave space on it. Signed-off-by: Ævar Arnfjörð Bjarmason --- archive.c | 14 +++++++++----- builtin/checkout.c | 4 +++- builtin/log.c | 5 +++-- builtin/ls-tree.c | 4 +++- merge-recursive.c | 3 ++- tree.h | 5 ++++- 6 files changed, 24 insertions(+), 11 deletions(-) diff --git a/archive.c b/archive.c index c19300ecb9b..77d1238df98 100644 --- a/archive.c +++ b/archive.c @@ -138,8 +138,10 @@ static int check_attr_export_subst(const struct attr_check *check) } static int write_archive_entry(const struct object_id *oid, const char *base, - int baselen, const char *filename, unsigned mode, int stage, - void *context) + int baselen, const char *filename, + unsigned mode, + int stage, + void *context) { static struct strbuf path = STRBUF_INIT; struct archiver_context *c = context; @@ -230,8 +232,9 @@ static int write_directory(struct archiver_context *c) } static int queue_or_write_archive_entry(const struct object_id *oid, - struct strbuf *base, const char *filename, - unsigned mode, void *context) + struct strbuf *base, const char *filename, + unsigned mode, + void *context) { struct archiver_context *c = context; int stage = 0; @@ -378,7 +381,8 @@ struct path_exists_context { }; static int reject_entry(const struct object_id *oid, struct strbuf *base, - const char *filename, unsigned mode, + const char *filename, + unsigned mode, void *context) { int ret = -1; diff --git a/builtin/checkout.c b/builtin/checkout.c index 0e663905200..0887352db2a 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -114,7 +114,9 @@ static int post_checkout_hook(struct commit *old_commit, struct commit *new_comm } static int update_some(const struct object_id *oid, struct strbuf *base, - const char *pathname, unsigned mode, void *context) + const char *pathname, + unsigned mode, + void *context) { int len; struct cache_entry *ce; diff --git a/builtin/log.c b/builtin/log.c index 980de590638..b7b76856a9f 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -598,8 +598,9 @@ static int show_tag_object(const struct object_id *oid, struct rev_info *rev) } static int show_tree_object(const struct object_id *oid, - struct strbuf *base, - const char *pathname, unsigned mode, void *context) + struct strbuf *base, const char *pathname, + unsigned mode, + void *context) { FILE *file = context; fprintf(file, "%s%s\n", pathname, S_ISDIR(mode) ? "/" : ""); diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c index 3a442631c71..8d5c3fd0582 100644 --- a/builtin/ls-tree.c +++ b/builtin/ls-tree.c @@ -62,7 +62,9 @@ static int show_recursive(const char *base, int baselen, const char *pathname) } static int show_tree(const struct object_id *oid, struct strbuf *base, - const char *pathname, unsigned mode, void *context) + const char *pathname, + unsigned mode, + void *context) { int retval = 0; int baselen; diff --git a/merge-recursive.c b/merge-recursive.c index 1c9b08695a3..689a3e00070 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -453,7 +453,8 @@ static void unpack_trees_finish(struct merge_options *opt) static int save_files_dirs(const struct object_id *oid, struct strbuf *base, const char *path, - unsigned int mode, void *context) + unsigned int mode, + void *context) { struct path_hashmap_entry *entry; int baselen = base->len; diff --git a/tree.h b/tree.h index f0b079d2e91..c1a936fdc49 100644 --- a/tree.h +++ b/tree.h @@ -31,7 +31,10 @@ struct tree *parse_tree_indirect(const struct object_id *oid); int cmp_cache_name_compare(const void *a_, const void *b_); #define READ_TREE_RECURSIVE 1 -typedef int (*read_tree_fn_t)(const struct object_id *, struct strbuf *, const char *, unsigned int, void *); +typedef int (*read_tree_fn_t)(const struct object_id *, struct strbuf *, + const char *, + unsigned int, + void *); int read_tree_at(struct repository *r, struct tree *tree, From patchwork Tue Mar 16 02:12:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141049 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.8 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 AEDF7C4332B for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 7399E6501D for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234573AbhCPCOX (ORCPT ); Mon, 15 Mar 2021 22:14:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34214 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234506AbhCPCNv (ORCPT ); Mon, 15 Mar 2021 22:13:51 -0400 Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 48B99C06174A for ; Mon, 15 Mar 2021 19:13:40 -0700 (PDT) Received: by mail-wr1-x435.google.com with SMTP id v4so6653218wrp.13 for ; Mon, 15 Mar 2021 19:13:40 -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=023LCVo440r+oBtTrpvVpIk/Ut6mbcsPsu/PyioFqIw=; b=Q5NRToYf3nXBil+oEnHyC4ctnVKcGBdjytnj1HzR3W/S9CtZS3Dtu0vhvB6JhA30oD ySWykXTR4Lf2xR7MDuNTbolNJ8vOPLAoHkU981rwQo4KrHtEhWoByejABPSwse0STwOz HLx2AFBLa4QWq+DqO1yKK49GzTJ/WgBKtWaC6FTMNuBvoWgCIHLkJXEG/tzdCdMeSt2S ZI1xQStqXxSfSEghO6GHGdHVm/WJNH4a4GbKAq11HLWf+9owuga4rCyApPjpPMHshMBg l8+YNt6QAPiSv2H1C92YLd2hILt84uv4EpkgSJ7fGz29JHlaDmIDizoHcS116vPyVZDk y/2A== 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=023LCVo440r+oBtTrpvVpIk/Ut6mbcsPsu/PyioFqIw=; b=HtpCCTBR5Lh2zOA1kAE2u+XaWkE8Bk5mPSmEyHd0iSYkavjziCwvKNqwCw2Twf+2YL k6VteJIDLsD1BtUd4FSulW9QjZQjBUm6a5UNQs+sU2hhhEOd5XyGLwz47ePvah7Zdbi/ 8iXrHBC0kB05sjK8+886UdA8WMWCayVdUvuDZGSfc169NTIwhPzPHfo07WWF6gDthGYO wpkkCGX5PbB2sxPjy0UocQmwMX+HZ4rCdZRXLSHtUaAePuB885fEfu1BEEKSfaUIuF+f lW+pWZVoSv7F5qMALp0NR/co1LJ+asW+XNaj/EBtfJkXWPFLYOIV0GcGtOvKC0To8Sqo N8Lw== X-Gm-Message-State: AOAM5332tCEjJenok8eu53P2acSkK2XSfGwiqFGDkjvOXcRK7ZI7UsPI MuKsIF1N/o1NTkvl5SAGKWRe9z/QERs8Pg== X-Google-Smtp-Source: ABdhPJzQajAXis2euuPJkVlM2oXL1wBfIk1glz2r5kNNPQ3OiyN58oonqj9osNz/QTKR2xkXNjNrDQ== X-Received: by 2002:adf:e94a:: with SMTP id m10mr2256804wrn.55.1615860818839; Mon, 15 Mar 2021 19:13:38 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:38 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 09/29] tree.h users: format argument lists in archive.c Date: Tue, 16 Mar 2021 03:12:52 +0100 Message-Id: <20210316021312.13927-10-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Re-indent and re-flow the argument lists archive.c has downstream of its read_tree_recursive() call to make subsequent commits easier to read, as I only expect to be modifying the "stage" and "mode" lines. Signed-off-by: Ævar Arnfjörð Bjarmason --- archive.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/archive.c b/archive.c index 77d1238df98..8ff97751c23 100644 --- a/archive.c +++ b/archive.c @@ -198,8 +198,10 @@ static int write_archive_entry(const struct object_id *oid, const char *base, } static void queue_directory(const unsigned char *sha1, - struct strbuf *base, const char *filename, - unsigned mode, int stage, struct archiver_context *c) + struct strbuf *base, const char *filename, + unsigned mode, + int stage, + struct archiver_context *c) { struct directory *d; size_t len = st_add4(base->len, 1, strlen(filename), 1); @@ -225,8 +227,10 @@ static int write_directory(struct archiver_context *c) ret = write_directory(c) || write_archive_entry(&d->oid, d->path, d->baselen, - d->path + d->baselen, d->mode, - d->stage, c) != READ_TREE_RECURSIVE; + d->path + d->baselen, + d->mode, + d->stage, + c) != READ_TREE_RECURSIVE; free(d); return ret ? -1 : 0; } @@ -260,14 +264,18 @@ static int queue_or_write_archive_entry(const struct object_id *oid, if (check_attr_export_ignore(check)) return 0; queue_directory(oid->hash, base, filename, - mode, stage, c); + mode, + stage, + c); return READ_TREE_RECURSIVE; } if (write_directory(c)) return -1; - return write_archive_entry(oid, base->buf, base->len, filename, mode, - stage, context); + return write_archive_entry(oid, base->buf, base->len, filename, + mode, + stage, + context); } struct extra_file_info { From patchwork Tue Mar 16 02:12:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141017 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.8 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 E7203C43331 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BFF1E65023 for ; Tue, 16 Mar 2021 02:14:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234451AbhCPCNs (ORCPT ); Mon, 15 Mar 2021 22:13:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34222 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231202AbhCPCNl (ORCPT ); Mon, 15 Mar 2021 22:13:41 -0400 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 40DC8C061756 for ; Mon, 15 Mar 2021 19:13:41 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id u5-20020a7bcb050000b029010e9316b9d5so554686wmj.2 for ; Mon, 15 Mar 2021 19:13:41 -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=aKBnouamoZKDLxwb26iJhvZwaifN+S5prk789Jolf84=; b=rBxXtms1m/3O70fmhiuehzWMeTl+b63TdXT6iD5HXF1jfYYMU19v4wz+8HWiGesicQ S5BFeEDsidLctsuDItfU2p3O/nD/zd4P9niSq49UFG6+tdTYyumkHtD6Xv9oGlXg1xaA JlD71LpRGklAtGktXB4DAshWjRVWyYJuVrPa9M2OjGnPPWXMLMLF4WoUANNuXqp/H/a/ l67hRPPbh9jSOVtyiG1xPWyImUfCrbzyKRfX4raf3yujOaxHW7LOVFwhdm2FPAHda+0R UNaX3JNdDz7QuzYvLSSV9l7inTvPmowLv/vVYsANBcPl2x2mWtCxW7sndWXX8kO1VhDH 7GLA== 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=aKBnouamoZKDLxwb26iJhvZwaifN+S5prk789Jolf84=; b=ButeNkVi5M65+OZdhpH2KcJnJRrbgCj6gex/TSJi76HvzFfrClpxL81PKaJ7QMsEvx 1itrQXypf3hEnVipqKf07QVRQBgCt8wgFB4IFdwfwEZ74Jizz7K+VU00OKhmstr790g0 CXSLxl2YSNIfPSVoo07uuWAKWw1BAjIDYbNlcrao9i+w4TSaspgTN8XXaoQt/Yuar9Xv KUO1voMwtHBJa409iJV9igGC/bSvLA748sRR9/K0M9tfAwFB+qoC45xDvdQNx80tJeNR w0rlms0kgtPMUCs9gSfplO0cuUjcptfWIh+8c9O26q2Ba8Zx9FpFVtjauh6iIb1Or3qM v6lw== X-Gm-Message-State: AOAM532COVNOoYqGouxAeYUV+Injf1hdwHLEguwZQifQ7R57tBM0xWuk YV2SrakAqY53EBWvtiisPAPOi2xd9syJzA== X-Google-Smtp-Source: ABdhPJxnLUe5sZoEoqLll1vnSN/eQsEjpEdj8lGrBLognqJzcaDqSzxVxWPNFiUPTZNWzfK2F+pPhw== X-Received: by 2002:a1c:2587:: with SMTP id l129mr2202309wml.135.1615860819619; Mon, 15 Mar 2021 19:13:39 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:39 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 10/29] archive: get rid of 'stage' parameter Date: Tue, 16 Mar 2021 03:12:53 +0100 Message-Id: <20210316021312.13927-11-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Stop passing the "stage" parameter around in archive.c. This parameter existed because the read_tree_recursive() function used to provide it, but no longer does. See my in-flight commit to remove it. (tree.h API: remove "stage" parameter from read_tree_recursive(), 2021-03-06). As can be seen in 562e25abea9 (archive: centralize archive entry writing, 2008-07-14) and ed22b4173bd (archive: support filtering paths with glob, 2014-09-21) it was never used by this code. We simply added it as a boilerplate, and then later added it to our own "directory "struct. Signed-off-by: Ævar Arnfjörð Bjarmason --- archive.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/archive.c b/archive.c index 8ff97751c23..529623167c9 100644 --- a/archive.c +++ b/archive.c @@ -107,7 +107,6 @@ struct directory { struct object_id oid; int baselen, len; unsigned mode; - int stage; char path[FLEX_ARRAY]; }; @@ -140,7 +139,6 @@ static int check_attr_export_subst(const struct attr_check *check) static int write_archive_entry(const struct object_id *oid, const char *base, int baselen, const char *filename, unsigned mode, - int stage, void *context) { static struct strbuf path = STRBUF_INIT; @@ -200,7 +198,6 @@ static int write_archive_entry(const struct object_id *oid, const char *base, static void queue_directory(const unsigned char *sha1, struct strbuf *base, const char *filename, unsigned mode, - int stage, struct archiver_context *c) { struct directory *d; @@ -209,7 +206,6 @@ static void queue_directory(const unsigned char *sha1, d->up = c->bottom; d->baselen = base->len; d->mode = mode; - d->stage = stage; c->bottom = d; d->len = xsnprintf(d->path, len, "%.*s%s/", (int)base->len, base->buf, filename); hashcpy(d->oid.hash, sha1); @@ -229,7 +225,6 @@ static int write_directory(struct archiver_context *c) write_archive_entry(&d->oid, d->path, d->baselen, d->path + d->baselen, d->mode, - d->stage, c) != READ_TREE_RECURSIVE; free(d); return ret ? -1 : 0; @@ -241,7 +236,6 @@ static int queue_or_write_archive_entry(const struct object_id *oid, void *context) { struct archiver_context *c = context; - int stage = 0; while (c->bottom && !(base->len >= c->bottom->len && @@ -265,7 +259,6 @@ static int queue_or_write_archive_entry(const struct object_id *oid, return 0; queue_directory(oid->hash, base, filename, mode, - stage, c); return READ_TREE_RECURSIVE; } @@ -274,7 +267,6 @@ static int queue_or_write_archive_entry(const struct object_id *oid, return -1; return write_archive_entry(oid, base->buf, base->len, filename, mode, - stage, context); } From patchwork Tue Mar 16 02:12:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141025 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.8 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 71113C43333 for ; Tue, 16 Mar 2021 02:14:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3A1A465011 for ; Tue, 16 Mar 2021 02:14:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234502AbhCPCNs (ORCPT ); Mon, 15 Mar 2021 22:13:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34224 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231211AbhCPCNm (ORCPT ); Mon, 15 Mar 2021 22:13:42 -0400 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24344C061756 for ; Mon, 15 Mar 2021 19:13:42 -0700 (PDT) Received: by mail-wr1-x42f.google.com with SMTP id d15so9664033wrv.5 for ; Mon, 15 Mar 2021 19:13:42 -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=MQWXmGpd9za8F1+n/dP51i40OER1/lhevM+xufVWaTw=; b=WSE24o7vo9w1pUaTuWzfPU2Hxx77EkUKzvNW7GXovADCc6mc1do4w5MQLsZO4kcOQZ 7OKbuqbFn10uBasvTCPLT4rv5CkJdKfl9TJbNdLCwE3nLlxWpxAr8YkFWdYzCB30678X E/382yAUIFWi/zoUcgcyCa/QXf5skLq/lK59VE2F3yE0P5cY+QRzaJslct47aY8eKjSA kOgxv/pwcHkZCCkud2D6HG8ZXsG+Tpx7LZUph4e6o/5fvbTFcGwLTAA/qfCPHGSkRirT qJ6uebjq0BCMEnS4qrKS9vb2nxyVdSXCz+y0dPhKIfIRtSwu1TKHaJmQL9b3AwusLyH0 2YqQ== 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=MQWXmGpd9za8F1+n/dP51i40OER1/lhevM+xufVWaTw=; b=XV3ckyzLhqRo48aLpHuD8p4iH2QSSsODM6CPPRH5C9n4QW0h5/EILZ6goQDYR5u+Lk 4NL27pCrdL3AR7TTj7h+hB7m8gNinNY1exWYZU436gVDsYYeLo2oFGdsxjZCmkXon6lD COv7Rkb0p/lFp5SBX+J/diLWGv39sLem14cmRoaMjyBKFsyfXlmIUfDTtZfqQijuUfXI pphmbF0JJm3iJk9DN1FylYaRI0bXVuRKs06JCq50ACwQ0PkaYg76w4Czc50/UwxGACtq sllnYGn47YvKK034+3E28Tp+G8fAE5oA2htMpIMQHr8ZfR+8HOSWePd9vXa38Y8+Cnw8 xS6w== X-Gm-Message-State: AOAM532m0xeAJszaIhn4r4t12l9dJ1MDslHAIjwsMhVZXsmoV8Y+6IRu /vs/U0itUcp5GAFyn9M8Bkr+WlrRUyjqyg== X-Google-Smtp-Source: ABdhPJzL/+DNJnf9MrOPy+PnAMxLPVhv3OFiCBOYDO1ZSE2qan7ET1Xi+qi7QM1a+lPWQYzxhx3m/A== X-Received: by 2002:a05:6000:147:: with SMTP id r7mr2315675wrx.25.1615860820505; Mon, 15 Mar 2021 19:13:40 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:39 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 11/29] tree.h API: make read_tree_fn_t take an "enum object_type" Date: Tue, 16 Mar 2021 03:12:54 +0100 Message-Id: <20210316021312.13927-12-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Most of the users of the read_tree_fn_t callback do not care about the "mode" per-se, they just care what type it resolves to. Amend this callback mechanism added in 3c5e8468a93 (ls-tree: major rewrite to do pathspec, 2005-11-26) to pass the object_type, and use it whenever possible. In the archive.c code we could go much deeper with this refactoring, after getting the "mode" that code will pass it around itself and into archive-{tar,zip}.c. As far as I can tell we could drop the mode early, and just pass "enum_object_type type, int is_executable". That would be slightly redundant space-wise, but would assure us that we're not writing out raw modes found in trees, but are normalizing them. But that particular refactoring would be larger than what I'm trying to accomplish here, so let's leave it for now. Signed-off-by: Ævar Arnfjörð Bjarmason --- archive.c | 8 ++++---- builtin/checkout.c | 4 ++-- builtin/log.c | 4 ++-- builtin/ls-files.c | 6 ++++-- builtin/ls-tree.c | 12 +++++------- merge-recursive.c | 6 ++++-- tree.c | 19 ++++++++++++------- tree.h | 2 +- 8 files changed, 34 insertions(+), 27 deletions(-) diff --git a/archive.c b/archive.c index 529623167c9..254e15c8d03 100644 --- a/archive.c +++ b/archive.c @@ -232,7 +232,7 @@ static int write_directory(struct archiver_context *c) static int queue_or_write_archive_entry(const struct object_id *oid, struct strbuf *base, const char *filename, - unsigned mode, + enum object_type object_type, unsigned mode, void *context) { struct archiver_context *c = context; @@ -245,7 +245,7 @@ static int queue_or_write_archive_entry(const struct object_id *oid, c->bottom = next; } - if (S_ISDIR(mode)) { + if (object_type == OBJ_TREE) { size_t baselen = base->len; const struct attr_check *check; @@ -382,13 +382,13 @@ struct path_exists_context { static int reject_entry(const struct object_id *oid, struct strbuf *base, const char *filename, - unsigned mode, + enum object_type object_type, unsigned mode, void *context) { int ret = -1; struct path_exists_context *ctx = context; - if (S_ISDIR(mode)) { + if (object_type == OBJ_TREE) { struct strbuf sb = STRBUF_INIT; strbuf_addbuf(&sb, base); strbuf_addstr(&sb, filename); diff --git a/builtin/checkout.c b/builtin/checkout.c index 0887352db2a..95b2b0edf22 100644 --- a/builtin/checkout.c +++ b/builtin/checkout.c @@ -115,14 +115,14 @@ static int post_checkout_hook(struct commit *old_commit, struct commit *new_comm static int update_some(const struct object_id *oid, struct strbuf *base, const char *pathname, - unsigned mode, + enum object_type object_type, unsigned mode, void *context) { int len; struct cache_entry *ce; int pos; - if (S_ISDIR(mode)) + if (object_type == OBJ_TREE) return READ_TREE_RECURSIVE; len = base->len + strlen(pathname); diff --git a/builtin/log.c b/builtin/log.c index b7b76856a9f..c25f75472ff 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -599,11 +599,11 @@ static int show_tag_object(const struct object_id *oid, struct rev_info *rev) static int show_tree_object(const struct object_id *oid, struct strbuf *base, const char *pathname, - unsigned mode, + enum object_type object_type, unsigned mode, void *context) { FILE *file = context; - fprintf(file, "%s%s\n", pathname, S_ISDIR(mode) ? "/" : ""); + fprintf(file, "%s%s\n", pathname, object_type == OBJ_TREE ? "/" : ""); return 0; } diff --git a/builtin/ls-files.c b/builtin/ls-files.c index 13bcc2d8473..b954d08ae41 100644 --- a/builtin/ls-files.c +++ b/builtin/ls-files.c @@ -446,7 +446,8 @@ static int read_one_entry_opt(struct index_state *istate, } static int read_one_entry(const struct object_id *oid, struct strbuf *base, - const char *pathname, unsigned mode, + const char *pathname, + enum object_type object_type, unsigned mode, void *context) { struct index_state *istate = context; @@ -460,7 +461,8 @@ static int read_one_entry(const struct object_id *oid, struct strbuf *base, * the stage that will conflict with the entry being added. */ static int read_one_entry_quick(const struct object_id *oid, struct strbuf *base, - const char *pathname, unsigned mode, + const char *pathname, + enum object_type object_type, unsigned mode, void *context) { struct index_state *istate = context; diff --git a/builtin/ls-tree.c b/builtin/ls-tree.c index 8d5c3fd0582..7176d2ae065 100644 --- a/builtin/ls-tree.c +++ b/builtin/ls-tree.c @@ -63,14 +63,13 @@ static int show_recursive(const char *base, int baselen, const char *pathname) static int show_tree(const struct object_id *oid, struct strbuf *base, const char *pathname, - unsigned mode, + enum object_type object_type, unsigned mode, void *context) { int retval = 0; int baselen; - const char *type = blob_type; - if (S_ISGITLINK(mode)) { + if (object_type == OBJ_COMMIT) { /* * Maybe we want to have some recursive version here? * @@ -80,22 +79,21 @@ static int show_tree(const struct object_id *oid, struct strbuf *base, retval = READ_TREE_RECURSIVE; * */ - type = commit_type; - } else if (S_ISDIR(mode)) { + } else if (object_type == OBJ_TREE) { if (show_recursive(base->buf, base->len, pathname)) { retval = READ_TREE_RECURSIVE; if (!(ls_options & LS_SHOW_TREES)) return retval; } - type = tree_type; } else if (ls_options & LS_TREE_ONLY) return 0; if (!(ls_options & LS_NAME_ONLY)) { + const char *type = type_name(object_type); if (ls_options & LS_SHOW_SIZE) { char size_text[24]; - if (!strcmp(type, blob_type)) { + if (object_type == OBJ_BLOB) { unsigned long size; if (oid_object_info(the_repository, oid, &size) == OBJ_BAD) xsnprintf(size_text, sizeof(size_text), diff --git a/merge-recursive.c b/merge-recursive.c index 689a3e00070..df4b369902f 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -453,7 +453,7 @@ static void unpack_trees_finish(struct merge_options *opt) static int save_files_dirs(const struct object_id *oid, struct strbuf *base, const char *path, - unsigned int mode, + enum object_type object_type, unsigned int mode, void *context) { struct path_hashmap_entry *entry; @@ -467,7 +467,9 @@ static int save_files_dirs(const struct object_id *oid, hashmap_add(&opt->priv->current_file_dir_set, &entry->e); strbuf_setlen(base, baselen); - return (S_ISDIR(mode) ? READ_TREE_RECURSIVE : 0); + if (object_type != OBJ_TREE) + return 0; + return READ_TREE_RECURSIVE; } static void get_files_dirs(struct merge_options *opt, struct tree *tree) diff --git a/tree.c b/tree.c index 6a2a52967e4..c840bf2ea24 100644 --- a/tree.c +++ b/tree.c @@ -28,6 +28,8 @@ int read_tree_at(struct repository *r, init_tree_desc(&desc, tree->buffer, tree->size); while (tree_entry(&desc, &entry)) { + struct commit *commit; + if (retval != all_entries_interesting) { retval = tree_entry_interesting(r->index, &entry, base, 0, pathspec); @@ -38,7 +40,7 @@ int read_tree_at(struct repository *r, } switch (fn(&entry.oid, base, - entry.path, entry.mode, context)) { + entry.path, entry.object_type, entry.mode, context)) { case 0: continue; case READ_TREE_RECURSIVE: @@ -47,11 +49,11 @@ int read_tree_at(struct repository *r, return -1; } - if (S_ISDIR(entry.mode)) + switch (entry.object_type) { + case OBJ_TREE: oidcpy(&oid, &entry.oid); - else if (S_ISGITLINK(entry.mode)) { - struct commit *commit; - + break; + case OBJ_COMMIT: commit = lookup_commit(r, &entry.oid); if (!commit) die("Commit %s in submodule path %s%s not found", @@ -64,9 +66,12 @@ int read_tree_at(struct repository *r, base->buf, entry.path); oidcpy(&oid, get_commit_tree_oid(commit)); - } - else + break; + case OBJ_BLOB: continue; + default: + BUG("unreachable"); + } len = tree_entry_len(&entry); strbuf_add(base, entry.path, len); diff --git a/tree.h b/tree.h index c1a936fdc49..12edb316f0c 100644 --- a/tree.h +++ b/tree.h @@ -33,7 +33,7 @@ int cmp_cache_name_compare(const void *a_, const void *b_); #define READ_TREE_RECURSIVE 1 typedef int (*read_tree_fn_t)(const struct object_id *, struct strbuf *, const char *, - unsigned int, + enum object_type, unsigned int, void *); int read_tree_at(struct repository *r, From patchwork Tue Mar 16 02:12:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141053 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.8 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 48A2DC43603 for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3584B65024 for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234595AbhCPCOa (ORCPT ); Mon, 15 Mar 2021 22:14:30 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34232 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234518AbhCPCNz (ORCPT ); Mon, 15 Mar 2021 22:13:55 -0400 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 386F8C061756 for ; Mon, 15 Mar 2021 19:13:43 -0700 (PDT) Received: by mail-wm1-x336.google.com with SMTP id j4-20020a05600c4104b029010c62bc1e20so550256wmi.3 for ; Mon, 15 Mar 2021 19:13:43 -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=MJI73Had1MhMkvOcsw9JObAb7Wp6gbDeCQ7qTuWirUs=; b=Ck4IfK3yPVkg9PhSIjW885WGX9mXtpWr8efZKrCAM0G/ta+X/mbSBnObqIz/gZU23B +1FRw/17yxP3hhHXng+laV7OWCDbRpHAJJdHDMM/LKpjAb5lT6UODfrKL1LZw2iXSjsI 6jjLN1CqwM2Yb5fZUcl6TuaJsUEpqcGzGqItXisF8iEze2KXLnCm6ukZOBbchK8dZLL/ nUaIOklYTyLvARPeuUN5LBCtxQTFPTq/Fp4d5LbneOw2SKJVj5taPFrv9xmj9A9TVXc8 5xF9O9eW/OwMuBsq/s7Ma2bzONmesaExTXZrRImqbpFUSNLAYNsPd0VfHuS1rp+3lqvk fM9A== 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=MJI73Had1MhMkvOcsw9JObAb7Wp6gbDeCQ7qTuWirUs=; b=KWRM7aixO4811QOtc9ErnCjkjT6n5N/tSmPHVdDLxXVFy22gCP5cWoe8bRmEkFdjiG JuiuO57e90DHBOqx0SJ/e6djwjMJwV6OhiMt1qpf6+AB/wb5B4IsKvauljmeZbgxMPSv UVopqo7JCa+IfgaWLWIYhXGagwRkHvkEBib9BH1VcN7NbfBUCN9IQXjA3r5Oq9joCj83 g5lrYxxQjTDJ33NhntwcJujFcFQkhhXhabiCTCOKOM/06gjZLmWxTnS9aryHG7qDlyAO XXV8SIKyVLfaJLFWQPVtAwYOjLOTWvs/rIHjVPfuhUTTbV+eNxfPq5hjCyD73p+/kfDl d6HA== X-Gm-Message-State: AOAM533t4M/gwKfG3C+iRD7wk4nXZWRH1soDJ5uEeNPd3eTgTI2k1y+W RPfaN26Tl6C7Zd45Bk6enn08v0OH5c3dDw== X-Google-Smtp-Source: ABdhPJzteQMABS63NTyBKXPm7wFbn3IAeOuFpEgriA29IoJTD9s61EA7MRDV/xCb0S7LgUyqdBOhvw== X-Received: by 2002:a1c:9854:: with SMTP id a81mr2175373wme.19.1615860821542; Mon, 15 Mar 2021 19:13:41 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:40 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 12/29] tree-walk.h users: migrate "p->mode &&" pattern Date: Tue, 16 Mar 2021 03:12:55 +0100 Message-Id: <20210316021312.13927-13-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change code that depends on "p->mode" either being a valid mode or zero to use a p->object_type comparison to "OBJ_NONE". The object_type() function in cache.h will not return OBJ_NONE, but these API users are implicitly relying on the memzero() that happens in setup_traverse_info(). Since OBJ_NONE is "0" we can also rely on that being zero'd out here, along with the rest of the structure. I think this is slightly less clever than "mode not set", and helps to get rid of more uses of "mode". Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/merge-tree.c | 9 +++++---- merge-ort.c | 2 +- unpack-trees.c | 4 ++-- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c index de8520778d2..2de34c2d485 100644 --- a/builtin/merge-tree.c +++ b/builtin/merge-tree.c @@ -214,7 +214,7 @@ static void unresolved_directory(const struct traverse_info *info, void *buf0, *buf1, *buf2; for (p = n; p < n + 3; p++) { - if (p->mode && S_ISDIR(p->mode)) + if (p->object_type == OBJ_TREE) break; } if (n + 3 <= p) @@ -222,7 +222,7 @@ static void unresolved_directory(const struct traverse_info *info, newbase = traverse_path(info, p); -#define ENTRY_OID(e) (((e)->mode && S_ISDIR((e)->mode)) ? &(e)->oid : NULL) +#define ENTRY_OID(e) (((e)->object_type == OBJ_TREE) ? &(e)->oid : NULL) buf0 = fill_tree_descriptor(r, t + 0, ENTRY_OID(n + 0)); buf1 = fill_tree_descriptor(r, t + 1, ENTRY_OID(n + 1)); buf2 = fill_tree_descriptor(r, t + 2, ENTRY_OID(n + 2)); @@ -242,7 +242,7 @@ static struct merge_list *link_entry(unsigned stage, const struct traverse_info const char *path; struct merge_list *link; - if (!n->mode) + if (n->object_type == OBJ_NONE) return entry; if (entry) path = entry->path; @@ -265,7 +265,8 @@ static void unresolved(const struct traverse_info *info, struct name_entry n[3]) * Treat missing entries as directories so that we return * after unresolved_directory has handled this. */ - if (!n[i].mode || S_ISDIR(n[i].mode)) + if (n[i].object_type == OBJ_NONE || + n[i].object_type == OBJ_TREE) dirmask |= (1 << i); } diff --git a/merge-ort.c b/merge-ort.c index 4075d13aaab..4375027914c 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -668,7 +668,7 @@ static int collect_merge_info_callback(int n, * setup_path_info() for tracking. */ p = names; - while (!p->mode) + while (p->object_type == OBJ_NONE) p++; len = traverse_path_len(info, p->pathlen); diff --git a/unpack-trees.c b/unpack-trees.c index d9d573df986..802de46228b 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -862,7 +862,7 @@ static int traverse_trees_recursive(int n, unsigned long dirmask, } p = names; - while (!p->mode) + while (p->object_type == OBJ_NONE) p++; newinfo = *info; @@ -1242,7 +1242,7 @@ static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, str const struct name_entry *p = names; /* Find first entry with a real name (we could use "mask" too) */ - while (!p->mode) + while (p->object_type == OBJ_NONE) p++; if (o->debug_unpack) From patchwork Tue Mar 16 02:12:56 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141021 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.8 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 52FAAC432C3 for ; Tue, 16 Mar 2021 02:14:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1E15065028 for ; Tue, 16 Mar 2021 02:14:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234504AbhCPCNt (ORCPT ); Mon, 15 Mar 2021 22:13:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231217AbhCPCNo (ORCPT ); Mon, 15 Mar 2021 22:13:44 -0400 Received: from mail-wm1-x32a.google.com (mail-wm1-x32a.google.com [IPv6:2a00:1450:4864:20::32a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EA246C06175F for ; Mon, 15 Mar 2021 19:13:43 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id r10-20020a05600c35cab029010c946c95easo549395wmq.4 for ; Mon, 15 Mar 2021 19:13:43 -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=2amckh+dhS2K/852fVHZlKdBSe9NgrV6DohX2B/OcfU=; b=VcBaCP8EIeg0nQtkRFLRC5CsZguGyPsI890kaACdTbfWWAEXn/kCxXtA/QuMqahXMH NLo9UaZa5DprcQh/s0ZP316PLQ52DuYfTS+qPsGvREDEXEyz8/UsgdL1rWb/KwiWrUOj 1uA3ZuRQXi/qHHn3E6z20+dzinhdhfZUtANrqigMx6zQ4+LQ21IONT47lp+uRjLI5HB8 4eaA4F55QxrNK/27F6b9vm0uP+G1iw6r4kCZpYUCw3Fv4vOeNy5DcgZCjD8Z035ISo0l oL0/7oJy3HlYqMrOqFYTOYb0P38mfsAGw5YhMztDHwBjAAQz23CVUSzhT6324tc2HqqK c9Mg== 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=2amckh+dhS2K/852fVHZlKdBSe9NgrV6DohX2B/OcfU=; b=pFnKrDcevcRr+/u9rYImmK1HbgvyVec0hAeQpS9J3Bly1HObp2PCb3bg9/9fndDN9I VgXKBJlRkG5O7LNjCzgLhj7fTPxlvQHsXLt7atb2mD0oy6K1VCd07V+uxi9rkc0Z+fRb 6iWPRMHB878MyfkkmpTr7HnnF5cXJLo95g6XN26KHKrtGX3sMDCjMSCNWtjcAeQLiE+C 8AC7/tSurwfwjeclFZc1N3W180Npz+laxSNcHf0f/6/sZ6pjEnGbrPGmY0ABT09ockKc ypZT4aBOT1W8eCIKyRNG4TwtozoWQ4QLWLo3Oenz6T/MCPNYAr5oIoxSbFeDtGu4Lc3Y T5zQ== X-Gm-Message-State: AOAM530+kdXdvrniJoIg59j08J0ckTkFZsm983O4bF2/NlujxHJj7hKS LFVGPftsKka3Mp9Jfp4pqTAm1IJBlu9n+w== X-Google-Smtp-Source: ABdhPJytB5+3zHhPbsal7ZVf7bPH9/bLFWggFC/pmEkf+6AiyUztMD40zfz5/8vdbyDmFYQf3TJt1g== X-Received: by 2002:a05:600c:3514:: with SMTP id h20mr2293880wmq.45.1615860822464; Mon, 15 Mar 2021 19:13:42 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:41 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 13/29] tree-walk.h users: refactor chained "mode" if/else into switch Date: Tue, 16 Mar 2021 03:12:56 +0100 Message-Id: <20210316021312.13927-14-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Refactor a couple of "switch" statements that previously relied on "entry.mode" to switch on "entry.object_type" instead. This is more obvious, and allows us to explicitly handle all the OBJ_* cases, not just have a wildcard "else". That doesn't matter for the behavior of this code, but for its readability and maintainability. Signed-off-by: Ævar Arnfjörð Bjarmason --- list-objects.c | 20 ++++++++++++++------ walker.c | 22 +++++++++++++--------- 2 files changed, 27 insertions(+), 15 deletions(-) diff --git a/list-objects.c b/list-objects.c index e19589baa04..37434ba89d3 100644 --- a/list-objects.c +++ b/list-objects.c @@ -111,6 +111,9 @@ static void process_tree_contents(struct traversal_context *ctx, init_tree_desc(&desc, tree->buffer, tree->size); while (tree_entry(&desc, &entry)) { + struct tree *t; + struct blob *b; + if (match != all_entries_interesting) { match = tree_entry_interesting(ctx->revs->repo->index, &entry, base, 0, @@ -121,8 +124,9 @@ static void process_tree_contents(struct traversal_context *ctx, continue; } - if (S_ISDIR(entry.mode)) { - struct tree *t = lookup_tree(ctx->revs->repo, &entry.oid); + switch (entry.object_type) { + case OBJ_TREE: + t = lookup_tree(ctx->revs->repo, &entry.oid); if (!t) { die(_("entry '%s' in tree %s has tree mode, " "but is not a tree"), @@ -130,12 +134,13 @@ static void process_tree_contents(struct traversal_context *ctx, } t->object.flags |= NOT_USER_GIVEN; process_tree(ctx, t, base, entry.path); - } - else if (S_ISGITLINK(entry.mode)) + break; + case OBJ_COMMIT: process_gitlink(ctx, entry.oid.hash, base, entry.path); - else { - struct blob *b = lookup_blob(ctx->revs->repo, &entry.oid); + break; + case OBJ_BLOB: + b = lookup_blob(ctx->revs->repo, &entry.oid); if (!b) { die(_("entry '%s' in tree %s has blob mode, " "but is not a blob"), @@ -143,6 +148,9 @@ static void process_tree_contents(struct traversal_context *ctx, } b->object.flags |= NOT_USER_GIVEN; process_blob(ctx, b, base, entry.path); + break; + default: + BUG("unreachable"); } } } diff --git a/walker.c b/walker.c index 4984bf8b3d6..7ba757244e6 100644 --- a/walker.c +++ b/walker.c @@ -45,21 +45,25 @@ static int process_tree(struct walker *walker, struct tree *tree) init_tree_desc(&desc, tree->buffer, tree->size); while (tree_entry(&desc, &entry)) { struct object *obj = NULL; + struct tree *tree; + struct blob *blob; - /* submodule commits are not stored in the superproject */ - if (S_ISGITLINK(entry.mode)) + switch (entry.object_type) { + case OBJ_COMMIT: + /* submodule commits are not stored in the superproject */ continue; - if (S_ISDIR(entry.mode)) { - struct tree *tree = lookup_tree(the_repository, - &entry.oid); + case OBJ_TREE: + tree = lookup_tree(the_repository, &entry.oid); if (tree) obj = &tree->object; - } - else { - struct blob *blob = lookup_blob(the_repository, - &entry.oid); + break; + case OBJ_BLOB: + blob = lookup_blob(the_repository, &entry.oid); if (blob) obj = &blob->object; + break; + default: + BUG("unreachable"); } if (!obj || process(walker, obj)) return -1; From patchwork Tue Mar 16 02:12:57 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141029 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.8 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 DF2C6C433DB for ; Tue, 16 Mar 2021 02:14:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A0C1E6501D for ; Tue, 16 Mar 2021 02:14:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234533AbhCPCOS (ORCPT ); Mon, 15 Mar 2021 22:14:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231563AbhCPCNp (ORCPT ); Mon, 15 Mar 2021 22:13:45 -0400 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D71D2C06175F for ; Mon, 15 Mar 2021 19:13:44 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id t9so6649949wrn.11 for ; Mon, 15 Mar 2021 19:13:44 -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=Ge9wYGXSvwVoiOH3wA229AQ8mijQH+v6ue2C4M+ECpA=; b=EG3usciJY8McYjsY/5xeSBawOPrmINpijWgNip/ygXdpqQz5qdxdnyb/LB/z9Ih8G8 +wsdwi7Qjd/HM6EDFuim1dmMhsPIIFCSthtmrs6hsvrkUWRFkEMTQ8puSqFLJWh7axpl 052BOcfytbkBIPZe7Fs2r4kOQqtxvS9pIavdPIJj3TUuuuf32nLH3SSZ02qeKBjlqo4H xREGUY/LAfeKJx/483j0h3VUPEQr8iQfrTj7vl9CLdHU/sGTyr9WzgimePiEM7vGLvji DB1EQnfdw7/LV+BOxeLf3ueLCqBt8S36nCVWYEzP2Y2pvTSd1ANrhgusTqFFYOYAwnWJ ENpA== 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=Ge9wYGXSvwVoiOH3wA229AQ8mijQH+v6ue2C4M+ECpA=; b=bssIEuOTNL1t8igksouie2ZzhYaiyj0ZpRYyw1sO4u3PA3yDhZqKcMg85nhooDGQY2 JABIrml8B+Q59CbjNvh7pSHsXamK0F5tVhJN7eMPU2dIov109ppaK9rNMD8IU0yp7HD/ HMODTDVq34cJACG4Cd8+THRYuj9Z/Gd+fw/+Rgc40MtZhZS7mtINUJBqaU8bpgKBAWDE ddBUIz0M/Ho25MqaiUgARLRlTG6FpgLCZvG4neYGJqdMnTdgLZ63paoYjDJW5b6MIpXF 3EJJfOTkXOiqldyNTFFXQb/qhRM+0LRglq8KphZSk7IadQCQ9CpZNfWjXtsQObhZGYvy 2QvA== X-Gm-Message-State: AOAM5334Mka3qq3tfA4jFsrLeyOGRk9UW2C2nc0lYOwc0zn6hYAPQ487 uJvXX9MpAAMGs2vBAh1+83bkCH5OvqN/4Q== X-Google-Smtp-Source: ABdhPJztBxz3R5FTUOhJm+KVnByiUupMpeStNGG6UG6oTU7hv6ObUuXyxKye5p8ZAuK888XZ5O4w4A== X-Received: by 2002:adf:d236:: with SMTP id k22mr2304565wrh.144.1615860823199; Mon, 15 Mar 2021 19:13:43 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:42 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 14/29] tree-walk.h users: migrate miscellaneous "mode" to "object_type" Date: Tue, 16 Mar 2021 03:12:57 +0100 Message-Id: <20210316021312.13927-15-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Refactor more users of the "entry.mode" field to use the new "entry.object_type" field. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/grep.c | 6 +++--- builtin/merge-tree.c | 9 +++++---- builtin/pack-objects.c | 4 ++-- builtin/reflog.c | 3 ++- cache-tree.c | 2 +- delta-islands.c | 2 +- notes.c | 4 ++-- unpack-trees.c | 2 +- 8 files changed, 17 insertions(+), 15 deletions(-) diff --git a/builtin/grep.c b/builtin/grep.c index 4e91a253ac3..5a317cdd2f4 100644 --- a/builtin/grep.c +++ b/builtin/grep.c @@ -587,10 +587,10 @@ static int grep_tree(struct grep_opt *opt, const struct pathspec *pathspec, strbuf_add(base, entry.path, te_len); - if (S_ISREG(entry.mode)) { + if (entry.object_type == OBJ_BLOB) { hit |= grep_oid(opt, &entry.oid, base->buf, tn_len, check_attr ? base->buf + tn_len : NULL); - } else if (S_ISDIR(entry.mode)) { + } else if (entry.object_type == OBJ_TREE) { enum object_type type; struct tree_desc sub; void *data; @@ -606,7 +606,7 @@ static int grep_tree(struct grep_opt *opt, const struct pathspec *pathspec, hit |= grep_tree(opt, pathspec, &sub, base, tn_len, check_attr); free(data); - } else if (recurse_submodules && S_ISGITLINK(entry.mode)) { + } else if (recurse_submodules && entry.object_type == OBJ_COMMIT) { hit |= grep_submodule(opt, pathspec, &entry.oid, base->buf, base->buf + tn_len, 1); /* ignored */ diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c index 2de34c2d485..12cb317c1ba 100644 --- a/builtin/merge-tree.c +++ b/builtin/merge-tree.c @@ -275,11 +275,11 @@ static void unresolved(const struct traverse_info *info, struct name_entry n[3]) if (dirmask == mask) return; - if (n[2].mode && !S_ISDIR(n[2].mode)) + if (n[2].object_type != OBJ_TREE) entry = link_entry(3, info, n + 2, entry); - if (n[1].mode && !S_ISDIR(n[1].mode)) + if (n[1].object_type != OBJ_TREE) entry = link_entry(2, info, n + 1, entry); - if (n[0].mode && !S_ISDIR(n[0].mode)) + if (n[0].object_type != OBJ_TREE) entry = link_entry(1, info, n + 0, entry); add_merge_entry(entry); @@ -324,7 +324,8 @@ static int threeway_callback(int n, unsigned long mask, unsigned long dirmask, s } if (same_entry(entry+0, entry+1)) { - if (!is_null_oid(&entry[2].oid) && !S_ISDIR(entry[2].mode)) { + if (!is_null_oid(&entry[2].oid) && + entry[2].object_type != OBJ_TREE) { /* We did not touch, they modified -- take theirs */ resolve(info, entry+1, entry+2); return mask; diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c index d3ba1d4a4a6..f92722c12d4 100644 --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@ -1524,7 +1524,7 @@ static void add_pbase_object(struct tree_desc *tree, int cmp; while (tree_entry(tree,&entry)) { - if (S_ISGITLINK(entry.mode)) + if (entry.object_type == OBJ_COMMIT) continue; cmp = tree_entry_len(&entry) != cmplen ? 1 : memcmp(name, entry.path, cmplen); @@ -1538,7 +1538,7 @@ static void add_pbase_object(struct tree_desc *tree, fullname, 1); return; } - if (S_ISDIR(entry.mode)) { + if (entry.object_type == OBJ_TREE) { struct tree_desc sub; struct pbase_tree_cache *tree; const char *down = name+cmplen+1; diff --git a/builtin/reflog.c b/builtin/reflog.c index 09541d1c804..bcbca82aa90 100644 --- a/builtin/reflog.c +++ b/builtin/reflog.c @@ -95,7 +95,8 @@ static int tree_is_complete(const struct object_id *oid) complete = 1; while (tree_entry(&desc, &entry)) { if (!has_object_file(&entry.oid) || - (S_ISDIR(entry.mode) && !tree_is_complete(&entry.oid))) { + (entry.object_type == OBJ_TREE && + !tree_is_complete(&entry.oid))) { tree->object.flags |= INCOMPLETE; complete = 0; } diff --git a/cache-tree.c b/cache-tree.c index 2fb483d3c08..fbe93dd2a5f 100644 --- a/cache-tree.c +++ b/cache-tree.c @@ -726,7 +726,7 @@ static void prime_cache_tree_rec(struct repository *r, init_tree_desc(&desc, tree->buffer, tree->size); cnt = 0; while (tree_entry(&desc, &entry)) { - if (!S_ISDIR(entry.mode)) + if (entry.object_type != OBJ_TREE) cnt++; else { struct cache_tree_sub *sub; diff --git a/delta-islands.c b/delta-islands.c index aa98b2e5414..e7cf93acbe3 100644 --- a/delta-islands.c +++ b/delta-islands.c @@ -293,7 +293,7 @@ void resolve_tree_islands(struct repository *r, while (tree_entry(&desc, &entry)) { struct object *obj; - if (S_ISGITLINK(entry.mode)) + if (entry.object_type == OBJ_COMMIT) continue; obj = lookup_object(r, &entry.oid); diff --git a/notes.c b/notes.c index 0a5b4fa1dbb..d631dc5623e 100644 --- a/notes.c +++ b/notes.c @@ -418,7 +418,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree, if (path_len == 2 * (hashsz - prefix_len)) { /* This is potentially the remainder of the SHA-1 */ - if (!S_ISREG(entry.mode)) + if (entry.object_type != OBJ_BLOB) /* notes must be blobs */ goto handle_non_note; @@ -431,7 +431,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree, /* This is potentially an internal node */ size_t len = prefix_len; - if (!S_ISDIR(entry.mode)) + if (entry.object_type != OBJ_TREE) /* internal nodes must be trees */ goto handle_non_note; diff --git a/unpack-trees.c b/unpack-trees.c index 802de46228b..33de78e32c8 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1300,7 +1300,7 @@ static int unpack_callback(int n, unsigned long mask, unsigned long dirmask, str if (dirmask) { /* special case: "diff-index --cached" looking at a tree */ if (o->diff_index_cached && - n == 1 && dirmask == 1 && S_ISDIR(names->mode)) { + n == 1 && dirmask == 1 && names->object_type == OBJ_TREE) { int matches; matches = cache_tree_matches_traversal(o->src_index->cache_tree, names, info); From patchwork Tue Mar 16 02:12:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141027 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 AAF56C433E0 for ; Tue, 16 Mar 2021 02:14:48 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 70BC864E6B for ; Tue, 16 Mar 2021 02:14:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234542AbhCPCOT (ORCPT ); Mon, 15 Mar 2021 22:14:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229883AbhCPCNq (ORCPT ); Mon, 15 Mar 2021 22:13:46 -0400 Received: from mail-wm1-x329.google.com (mail-wm1-x329.google.com [IPv6:2a00:1450:4864:20::329]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B2153C06175F for ; Mon, 15 Mar 2021 19:13:45 -0700 (PDT) Received: by mail-wm1-x329.google.com with SMTP id f22-20020a7bc8d60000b029010c024a1407so528301wml.2 for ; Mon, 15 Mar 2021 19:13:45 -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=t0vk+9uNAFEBEw7bNKK0/kJW1iilCi4rZz4KGMkpIqg=; b=lrQthKBjboWhQQiWR28pIaik3fljNk7+1l/Nx0jSxH0otTMZTohcENBUzlY6WnTGdL uSowML8K8yqFE6+nsYi/otCiC/5SFSNv2uMZrcrjN56zL3Ejy3YkoA3Nr8/oOcN7Wand L3nB8lsknUryh2dRDEnf3Zn+UZ09dId+EDLjPi+1vEy7UuHAUMoKw7r4mZTHV8LmZIXp sBHe2kuv/fmPN9dvNB1j5O2HIhU5HBIGFeiD3P7hreOZ2MiFPDdN7TlUKkVc8zSkjrhd QV7ib0XvBZQdYOoSXexr5hPU2vteunHUTEKD5pIla7Zt7rl4Woyy+J+Hn6G7gcZrSMZa hMcg== 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=t0vk+9uNAFEBEw7bNKK0/kJW1iilCi4rZz4KGMkpIqg=; b=YZRlGqYXgKiBzvGNmb/su/0fq6rFlNVfd+CBf5yeCkA+kUz6VR5ardl3kU3UvpIFoY KNQPEKFJEZHoNKY1BgWyuTVtMyJG8M1FGgWHhmeYCJJlc8Q+BRzcEmI4M2kxEJOU7UtR PejiU0/vt57WhzGgUi9iXB37E4194ooKGh21dFPvHSy1WaAxobGqN09ZyME4rFlD1Fxn qGvM6vGaeorGdDFvQnk+cx5Oha2OTr0CBlbivrew6xuQGs4cbRZS5bOaOGo9fnCV3w0n Ab5MJdMFb9f8LpWE94z0xRuxEGkjfI3R5OuJQl3w6tMgzgCRIiFkQl8W9INJM+QjyAXu gcSw== X-Gm-Message-State: AOAM533XQzYfWREfWaldgFfVblJNFj/zz4kdRfQEIgRs8bWshOH+JTMO 4i1JrzbnbsePSs9dsqW60bTIFDtUkZn3Pg== X-Google-Smtp-Source: ABdhPJyL36jVDyelL56QdgiioIVJJIRtg1z9Z2/78c9FATBZaUkmehU2UaMUw8sqhGQ+8Um5IGdDpQ== X-Received: by 2002:a1c:2857:: with SMTP id o84mr2199496wmo.181.1615860824216; Mon, 15 Mar 2021 19:13:44 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:43 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 15/29] merge-tree tests: test for the mode comparison in same_entry() Date: Tue, 16 Mar 2021 03:12:58 +0100 Message-Id: <20210316021312.13927-16-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a test to stress the "a->mode == b->mode" comparison in merge-tree.c's same_entry(). That code was initially added by Linus in 33deb63a36f (Add "merge-tree" helper program. Maybe it's retarded, maybe it's helpful., 2005-04-14), and then again in its current form in 492e0759bfe (Handling large files with GIT, 2006-02-14). However, nothing was testing that we handled this case correctly. Simply removing the mode comparison left all tests passing, but as seen here it's important that we don't think a path with the same content but different modes is the same_entry(). The rest of this series will touch code that's relevant to this, but won't change its behavior. This test is just something I came up with in testing whether the mode test in same_entry() was needed at all. Signed-off-by: Ævar Arnfjörð Bjarmason --- t/t4300-merge-tree.sh | 44 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/t/t4300-merge-tree.sh b/t/t4300-merge-tree.sh index e59601e5fe9..f783d784d02 100755 --- a/t/t4300-merge-tree.sh +++ b/t/t4300-merge-tree.sh @@ -40,6 +40,25 @@ test_expect_success 'file add A, B (same)' ' test_must_be_empty actual ' +test_expect_success 'file add A, B (different mode)' ' + git reset --hard initial && + test_commit "add-a-b-same-diff-mode-A" "ONE" "AAA" && + git reset --hard initial && + echo AAA >ONE && + test_chmod +x ONE && + test_tick && + git commit -m"add-a-b-same-diff-mode-B" && + git tag "add-a-b-same-diff-mode-B" HEAD && + git merge-tree initial add-a-b-same-diff-mode-A add-a-b-same-diff-mode-B >actual && + cat >expected <ONE && + test_chmod +x ONE && + test_tick && + git commit -m"add-a-b-diff-diff-mode-B" && + git tag "add-a-b-diff-diff-mode-B" && + git merge-tree initial add-a-b-diff-diff-mode-A add-a-b-diff-diff-mode-B >actual && + cat >expected <>>>>>> .their +EXPECTED + + test_cmp expected actual +' + test_expect_success 'file change A, !B' ' git reset --hard initial && test_commit "change-a-not-b" "initial-file" "BBB" && From patchwork Tue Mar 16 02:12:59 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141031 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.8 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 34A5CC43381 for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 025B265024 for ; Tue, 16 Mar 2021 02:14:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234553AbhCPCOV (ORCPT ); Mon, 15 Mar 2021 22:14:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230080AbhCPCNq (ORCPT ); Mon, 15 Mar 2021 22:13:46 -0400 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 87E6DC06175F for ; Mon, 15 Mar 2021 19:13:46 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id o14so5862305wrm.11 for ; Mon, 15 Mar 2021 19:13:46 -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=K7yPX75bnLAyUrlEM8eLSBYD323wzW2t0mf35Y4YydQ=; b=AkRbUsRk7z0INP6NYf18LSrgk3pJYHSn8+QB7Fgf3SP3L4iIG8JHOoZUKMH+y5kAnM zzJqXnuVG4rH8uuaAVIqPpw70azpuRkIWqrjGbTR8Y9PHC2VMEJz6RVmghtWW4+Egonz 37NrbXw/hsv489ZJNFKgJWzg7CkiiEDsoxQRBK5eyNM1EddDCXEWwQ1a5aj2CK7oXP/w mnS1k1bWnepZC2+FHveekObvZnxni8VLIzAgfnEKQ3U7w/I/botoHF9YhFvBBCeUBnaC fm6pvqGSgEquRXw/3qI3pdJ3h273T9azaRNeeMamE5R7VTp/UpJTS6k7FFA9p2HRyD0I Uagg== 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=K7yPX75bnLAyUrlEM8eLSBYD323wzW2t0mf35Y4YydQ=; b=E9vxl3o1L9Lzqf3dxvGHzFwfV0inITUk22gPRL0QfPKbV8qWa9CFQH6M/bj8q8MezV qZ0xUfllnBsC6yYizCa+DNs9D5cOqK7kv4QFIhvlriv4lA/SMNFSk1OUgngRtH4b4H5O yxU34qfk4jzckIBsKmRX81r4mk87MDDJ2tPp3QUZFIUxqySUo1Y/H0bK23Q8GR9eBmG7 sO8PWq8N2RcD1ZbZw5ToWQLwyZjFFumRff/7VEV9RIA7jkoRRuKMttT8b0BfyXZ8Sic/ 1+ebyWIBdISmt9+/ouBZgKSc17UJHv5ObJDj65S2XDc7kz2DFsoknTOpgVhsM0hQwBV1 JLEA== X-Gm-Message-State: AOAM533C6DHyZCmDMbIHhLxeJYoP5wsuK8FPiMRLgcWw2zURzxz1M4/f 3mQxQIsLGujeQBFaBdw3op11It6ECwl6Sw== X-Google-Smtp-Source: ABdhPJx/8oI1K5lBJ1Xio12DivI5d1pBXXt2iNrlHEBh8pJ+7//EJ02YYJ5pkcS2vGAPRXghdDIF/g== X-Received: by 2002:a5d:564b:: with SMTP id j11mr2320406wrw.326.1615860825113; Mon, 15 Mar 2021 19:13:45 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:44 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 16/29] merge-ort: correct reference to test in 62fdec17a11 Date: Tue, 16 Mar 2021 03:12:59 +0100 Message-Id: <20210316021312.13927-17-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Fix a comment added in 62fdec17a11 (merge-ort: flesh out implementation of handle_content_merge(), 2021-01-01). The test being referred to here was moved from t6036 in 919df319555 (Collect merge-related tests to t64xx, 2020-08-10). It has also had the plural of "mode" in the name ever since being introduced in 5d1daf30cce (t6036: add a failed conflict detection case: regular files, different modes, 2018-06-30). Signed-off-by: Ævar Arnfjörð Bjarmason --- merge-ort.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/merge-ort.c b/merge-ort.c index 4375027914c..e54be179bd5 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -1079,7 +1079,7 @@ static int handle_content_merge(struct merge_options *opt, /* * FIXME: If opt->priv->call_depth && !clean, then we really * should not make result->mode match either a->mode or - * b->mode; that causes t6036 "check conflicting mode for + * b->mode; that causes t6416 "check conflicting modes for * regular file" to fail. It would be best to use some other * mode, but we'll confuse all kinds of stuff if we use one * where S_ISREG(result->mode) isn't true, and if we use From patchwork Tue Mar 16 02:13:00 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141035 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.8 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 01B60C433E6 for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BA5496501A for ; Tue, 16 Mar 2021 02:14:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234548AbhCPCOU (ORCPT ); Mon, 15 Mar 2021 22:14:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232599AbhCPCNr (ORCPT ); Mon, 15 Mar 2021 22:13:47 -0400 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 45347C06175F for ; Mon, 15 Mar 2021 19:13:47 -0700 (PDT) Received: by mail-wm1-x333.google.com with SMTP id c76-20020a1c9a4f0000b029010c94499aedso551071wme.0 for ; Mon, 15 Mar 2021 19:13:47 -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=4ZIeawCokkahloLMIdWp61GkJ5E26pdQFgO//MNau3E=; b=J+bGNkb1GeQSj8IzaVQCZ0kiCzsBBMZptVjOEMWCCzl1DPFVx/znPyI0u/qh8gIAl9 7jMs+J9H6CDeQNg4OhC+TVBZJgG1Oy8KI+cIcVnKlUopZCYGVHpzvg6vJDKiK2X7yk2g tmMOUQ6sJd08rUblyaEWg3ZDmKPPTyPEzNetj64etrgmoIcAlRPUARdVDvBEkGNk4JXu lEnOk/wjtDi2CY+UXEhvMy1a87cUuV72RId58zWVj4we+PufXC4s2ic+Aq0uIwhCaXvM 176stvIA/5w7H7IXKYTW3gufNsoQ8C2xBTiayGFITM7drR5YrK0IBj9dc85X9Qpts+uN 9Bew== 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=4ZIeawCokkahloLMIdWp61GkJ5E26pdQFgO//MNau3E=; b=CbSVC26ooOlnYVlyAjGoUVowVc2Dq/ULyxJQJg3ngpYvbWXbCKB15fCWcdwlfhQCLn ErqiTIoVEeV+MUmataHqC2uM2QksLl1sQCvsjD7T9qPyTOjo8tuoREvX07mpfIqSZQg8 dspF0q8kPLj5syR7rjsqwDf9PE2s5jk3jgohbovRpiWrffCs1MFaikdLLN+/a7YJ/H7e ixic+RY5xZpFbYtMd9vBMWs7Li9WFb/Ikya5xgkFpHUnoNMqbfPVcZdVNbk6cGA+Mcgi 3wfEwWjNYXTCjzWSooSBs+lkoHFUb5ohNTK2cUAaU4D+FRUHYWp/4QpSoRUWN6f/6RY4 sd+w== X-Gm-Message-State: AOAM532e8DlNvGYU16T7kFRJfb/jQF1AtmB94vdkf+0qQdz69M5W5YTa DLbynUNurVdn1LJDgnGVmIfYIRrJkwRyqA== X-Google-Smtp-Source: ABdhPJz47liKjMI9Nk+Z0NA99oWwwUbFCIhGkMg087P1jAaOGf6g/kFCpDieIywihqmQ+gRZGuSwYw== X-Received: by 2002:a1c:b789:: with SMTP id h131mr2278681wmf.106.1615860825785; Mon, 15 Mar 2021 19:13:45 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:45 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 17/29] fsck.c: switch on "object_type" in fsck_walk_tree() Date: Tue, 16 Mar 2021 03:13:00 +0100 Message-Id: <20210316021312.13927-18-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Since 7146e66f086 (tree-walk: finally switch over tree descriptors to contain a pre-parsed entry, 2014-02-06) the "mode" is validated such that we'll never reach the "else" clause here. Good for us that fsck_tree() has its own FSCK_MSG_BAD_FILEMODE check which we can use, added way back in 64071805eda (git-fsck-cache: be stricter about "tree" objects, 2005-07-27). Except it really doesn't due to a regression in 7146e66f086. A follow-up commit will address that, but for now we can simply rewrite this code like the rest of the s/entry.mode/entry.object_type/g changes I'm making. Signed-off-by: Ævar Arnfjörð Bjarmason --- fsck.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/fsck.c b/fsck.c index e3030f3b358..7c74c49d329 100644 --- a/fsck.c +++ b/fsck.c @@ -396,28 +396,25 @@ static int fsck_walk_tree(struct tree *tree, void *data, struct fsck_options *op struct object *obj; int result; - if (S_ISGITLINK(entry.mode)) + switch (entry.object_type) { + case OBJ_COMMIT: continue; - - if (S_ISDIR(entry.mode)) { + case OBJ_TREE: obj = (struct object *)lookup_tree(the_repository, &entry.oid); if (name && obj) fsck_put_object_name(options, &entry.oid, "%s%s/", name, entry.path); - result = options->walk(obj, OBJ_TREE, data, options); - } - else if (S_ISREG(entry.mode) || S_ISLNK(entry.mode)) { + break; + case OBJ_BLOB: obj = (struct object *)lookup_blob(the_repository, &entry.oid); if (name && obj) fsck_put_object_name(options, &entry.oid, "%s%s", name, entry.path); - result = options->walk(obj, OBJ_BLOB, data, options); - } - else { - result = error("in tree %s: entry %s has bad mode %.6o", - fsck_describe_object(options, &tree->object.oid), - entry.path, entry.mode); + break; + default: + BUG("unreachable"); } + result = options->walk(obj, entry.object_type, data, options); if (result < 0) return result; if (!res) From patchwork Tue Mar 16 02:13:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141033 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.8 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 23B08C433E9 for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D740565026 for ; Tue, 16 Mar 2021 02:14:48 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234564AbhCPCOW (ORCPT ); Mon, 15 Mar 2021 22:14:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234498AbhCPCNs (ORCPT ); Mon, 15 Mar 2021 22:13:48 -0400 Received: from mail-wr1-x42b.google.com (mail-wr1-x42b.google.com [IPv6:2a00:1450:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4CC01C06175F for ; Mon, 15 Mar 2021 19:13:48 -0700 (PDT) Received: by mail-wr1-x42b.google.com with SMTP id j7so6651625wrd.1 for ; Mon, 15 Mar 2021 19:13: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=ORLI8jIHNN6odozVJKVdENvgCzfChNurZQjk9K1QbGI=; b=n5eCYjZMaheBU8Cr0ylpG1mUHonST3TZf6518lcbezKA1USLt1q5eJxG0eNk6jPWVS qKo/M+Yv2j/o+1QDus5nUgo7CMRgNZwagnKq5qMVrFNbB2a2nFUM1zC053wRACvnMASK FD8r0jeG/fkMch+JljW/biuL2BwJiNDUh2aQEgo56aQIg+tj2d8soKg82YTRKTZhfi6h mnpXw/2miYSLWJwUft6LnObcOgJDcov5M6bqleGmYUW2XQuh1FHDA00vplbztKOxoH21 mfg/D9FJG6OdAgegAkPIVRLmtgFbcYKaJI0ItG8EPkFNtqGsNiJWPaiew6NXlfiziig0 3X3g== 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=ORLI8jIHNN6odozVJKVdENvgCzfChNurZQjk9K1QbGI=; b=AJZh6Uv5EMoZPWd4RUsOLXp1Sr8PRHIPLTjD6IZEZd8xazo6xCdNJbYMLCstliy7Ku hwgmBngvDEEhFDEju3gG1nQ7i3lLQW2xxAjvzstJ1aJIxoA824Lrs4zEaE+qd3bTJQT+ IpSEo3xyKNv2OKK5AZT96iBJ3ZtZeKNh8hkWFbtErmDHa8ScqXZzOuSY+2qoayisapBS /V3Q2PXpBNeh9gFlTy+kKrPPYDqFUfskjcd0SeKmOitda4gSOoZMYcPCqRmHv7IiAQPk 8ya1taCRDDW2lfHwz5s8xYBMmj6svfgXjx3uzu1iJlZUEHbCELu8zb9sF6NPJuPHI5BS xV1Q== X-Gm-Message-State: AOAM532o9g0jFzDF/pRhOLJ9a+1JyAlJW+oXW9ViNpJSTlkWmkt5uh0M yIxT2WQ99cZlyJHR5XuXVFOuGFOOKxfYzQ== X-Google-Smtp-Source: ABdhPJzyDS2nESNsaYjeCJsMPHbkPjbJDaa/NoI2PsqpJkY5fLPO40ZPSJgLgzE14zQJc95lNQcFjQ== X-Received: by 2002:adf:e5c8:: with SMTP id a8mr2355158wrn.352.1615860826678; Mon, 15 Mar 2021 19:13:46 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:46 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 18/29] tree-walk.h users: use temporary variable(s) for "mode" Date: Tue, 16 Mar 2021 03:13:01 +0100 Message-Id: <20210316021312.13927-19-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org In preparation for an eventual rename of the "mode" field, add temporary variable(s) in those places where it's used more than once. This will make a subsequent commits easier to read., since we're only going to need to modify the line on which the assignment happens. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/merge-tree.c | 12 +++++++++--- match-trees.c | 13 +++++++------ merge-ort.c | 5 +++-- notes.c | 3 ++- tree-diff.c | 13 ++++++++----- unpack-trees.c | 3 ++- 6 files changed, 31 insertions(+), 18 deletions(-) diff --git a/builtin/merge-tree.c b/builtin/merge-tree.c index 12cb317c1ba..eec5b906561 100644 --- a/builtin/merge-tree.c +++ b/builtin/merge-tree.c @@ -190,14 +190,17 @@ static void resolve(const struct traverse_info *info, struct name_entry *ours, s { struct merge_list *orig, *final; const char *path; + unsigned int orig_mode, final_mode; /* If it's already ours, don't bother showing it */ if (!ours) return; path = traverse_path(info, result); - orig = create_entry(2, ours->mode, &ours->oid, path); - final = create_entry(0, result->mode, &result->oid, path); + orig_mode = ours->mode; + orig = create_entry(2, orig_mode, &ours->oid, path); + final_mode = result->mode; + final = create_entry(0, final_mode, &result->oid, path); final->link = orig; @@ -241,6 +244,7 @@ static struct merge_list *link_entry(unsigned stage, const struct traverse_info { const char *path; struct merge_list *link; + unsigned int link_mode; if (n->object_type == OBJ_NONE) return entry; @@ -248,7 +252,9 @@ static struct merge_list *link_entry(unsigned stage, const struct traverse_info path = entry->path; else path = traverse_path(info, n); - link = create_entry(stage, n->mode, &n->oid, path); + link_mode = n->mode; + link = create_entry(stage, link_mode, &n->oid, path); + link->link = entry; return link; } diff --git a/match-trees.c b/match-trees.c index a28c19a62a5..f3e192ca74d 100644 --- a/match-trees.c +++ b/match-trees.c @@ -86,6 +86,8 @@ static int score_trees(const struct object_id *hash1, const struct object_id *ha for (;;) { int cmp; + unsigned int one_mode = one.entry.mode; + unsigned int two_mode = two.entry.mode; if (one.size && two.size) cmp = base_name_entries_compare(&one.entry, &two.entry); @@ -100,22 +102,21 @@ static int score_trees(const struct object_id *hash1, const struct object_id *ha if (cmp < 0) { /* path1 does not appear in two */ - score += score_missing(one.entry.mode); + score += score_missing(one_mode); update_tree_entry(&one); } else if (cmp > 0) { /* path2 does not appear in one */ - score += score_missing(two.entry.mode); + score += score_missing(two_mode); update_tree_entry(&two); } else { + /* path appears in both */ if (!oideq(&one.entry.oid, &two.entry.oid)) { /* they are different */ - score += score_differs(one.entry.mode, - two.entry.mode); + score += score_differs(one_mode, two_mode); } else { /* same subtree or blob */ - score += score_matches(one.entry.mode, - two.entry.mode); + score += score_matches(one_mode, two_mode); } update_tree_entry(&one); update_tree_entry(&two); diff --git a/merge-ort.c b/merge-ort.c index e54be179bd5..cad10436504 100644 --- a/merge-ort.c +++ b/merge-ort.c @@ -544,11 +544,12 @@ static void add_pair(struct merge_options *opt, struct diff_filespec *one, *two; struct rename_info *renames = &opt->priv->renames; int names_idx = is_add ? side : 0; + const struct object_id *oid = &names[names_idx].oid; + unsigned int mode = names[names_idx].mode; one = alloc_filespec(pathname); two = alloc_filespec(pathname); - fill_filespec(is_add ? two : one, - &names[names_idx].oid, 1, names[names_idx].mode); + fill_filespec(is_add ? two : one, oid, 1, mode); diff_queue(&renames->pairs[side], one, two); } diff --git a/notes.c b/notes.c index d631dc5623e..688d03ee9cd 100644 --- a/notes.c +++ b/notes.c @@ -478,6 +478,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree, struct strbuf non_note_path = STRBUF_INIT; const char *q = oid_to_hex(&subtree->key_oid); size_t i; + unsigned int mode = entry.mode; for (i = 0; i < prefix_len; i++) { strbuf_addch(&non_note_path, *q++); strbuf_addch(&non_note_path, *q++); @@ -485,7 +486,7 @@ static void load_subtree(struct notes_tree *t, struct leaf_node *subtree, } strbuf_add(&non_note_path, entry.path, path_len); add_non_note(t, strbuf_detach(&non_note_path, NULL), - entry.mode, entry.oid.hash); + mode, entry.oid.hash); } } free(buf); diff --git a/tree-diff.c b/tree-diff.c index 6ec180331fb..088ed52d6a3 100644 --- a/tree-diff.c +++ b/tree-diff.c @@ -466,17 +466,19 @@ static struct combine_diff_path *ll_diff_tree_paths( tp[0].entry.mode &= ~S_IFXMIN_NEQ; for (i = 1; i < nparent; ++i) { + unsigned int mode = tp[i].entry.mode; cmp = tree_entry_pathcmp(&tp[i], &tp[imin]); if (cmp < 0) { imin = i; - tp[i].entry.mode &= ~S_IFXMIN_NEQ; + mode &= ~S_IFXMIN_NEQ; } else if (cmp == 0) { - tp[i].entry.mode &= ~S_IFXMIN_NEQ; + mode &= ~S_IFXMIN_NEQ; } else { - tp[i].entry.mode |= S_IFXMIN_NEQ; + mode |= S_IFXMIN_NEQ; } + tp[i].entry.mode = mode; } /* fixup markings for entries before imin */ @@ -493,13 +495,14 @@ static struct combine_diff_path *ll_diff_tree_paths( /* are either pi > p[imin] or diff(t,pi) != ø ? */ if (!opt->flags.find_copies_harder) { for (i = 0; i < nparent; ++i) { + unsigned int mode = tp[i].entry.mode; /* p[i] > p[imin] */ - if (tp[i].entry.mode & S_IFXMIN_NEQ) + if (mode & S_IFXMIN_NEQ) continue; /* diff(t,pi) != ø */ if (!oideq(&t.entry.oid, &tp[i].entry.oid) || - (t.entry.mode != tp[i].entry.mode)) + (t.entry.mode != mode)) continue; goto skip_emit_t_tp; diff --git a/unpack-trees.c b/unpack-trees.c index 33de78e32c8..2319b114ba0 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1023,8 +1023,9 @@ static struct cache_entry *create_ce_entry(const struct traverse_info *info, is_transient ? make_empty_transient_cache_entry(len) : make_empty_cache_entry(istate, len); + unsigned int mode = n->mode; - ce->ce_mode = create_ce_mode(n->mode); + ce->ce_mode = create_ce_mode(mode); ce->ce_flags = create_ce_flags(stage); ce->ce_namelen = len; oidcpy(&ce->oid, &n->oid); From patchwork Tue Mar 16 02:13:02 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141061 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.8 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 780C2C43142 for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 64D7C6502E for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234616AbhCPCOc (ORCPT ); Mon, 15 Mar 2021 22:14:32 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34236 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234523AbhCPCOA (ORCPT ); Mon, 15 Mar 2021 22:14:00 -0400 Received: from mail-wr1-x435.google.com (mail-wr1-x435.google.com [IPv6:2a00:1450:4864:20::435]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F310C06175F for ; Mon, 15 Mar 2021 19:13:49 -0700 (PDT) Received: by mail-wr1-x435.google.com with SMTP id j2so9643303wrx.9 for ; Mon, 15 Mar 2021 19:13: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=HKBmeL5mGNcpScmpi3Tdqxig2aOh0OKNdGErZBSD6RE=; b=MAsvXle+cc1wCL92+QEitr8ULoRQK4Jjp95HPLyBCSqWRb0N3nRS1nHxf3oA6aHDCF g8sD9DvNn/NJw2g11wCa8hsUT0YSeXsLXEmKvK05IEbnOTuVwbL8Gzx1Arik/1DeM0kk F8DnRkl0Vv776PwkKjiSjlLOsDXCYgK6bHyXJyQR4spyX6aYrbgmcFO38yFBsEk+aFO3 vZhGsUC5D4GP4frwOFs0pW9d7WeTHS7A6IcVp89HewieIjt1nO1isBcyZqnk2FM0QDot wzt4ojwf3Q0fTx9Z4eII14ReZgqLadZny71zsgvGSozo8OEJ2c+O8bAUFuUIzQCb06/p dgCQ== 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=HKBmeL5mGNcpScmpi3Tdqxig2aOh0OKNdGErZBSD6RE=; b=qClURBaE7+md3Wu95AIGwOxjhBPovuDaXAIKPEfCa2+ryP3UZj38Oznnp8I0IhgNoy Ze+9PdMDAKCXah+SxYy6BadbTW9nMkgGORxa1Fg9oJXFfgToFxfZUz9cLK8JgYrx+qV7 fYfX+mjozOoRYrrX1lA1UU5pWViX+56FHbEWmOc4I5oAfDrLneGY86AWi5oNJXOY0aJ3 6IijzXUBnze4mkv1/wMoWBDDirNA8NQtk9/wI3jdpMETvoMyTw9ur8AmxerZ5W5BLu2y Al/6r/GAyzYXgvuHFggw3al57KClj4cZif8vmD261nV4AIrRSaJy/bdHTrT7PWNL58YF tvSw== X-Gm-Message-State: AOAM532KPZfHo8JZ8w/2p6pHiAJJx5xeg7bVcvMutWGiwBhe8y0uNeQi VY3g6Cif7kXj1j1ZICbh4+ErzbrKgdgdvQ== X-Google-Smtp-Source: ABdhPJxKcSOFMQN07DNOHPY6x+bdvkhx4fz1emEXt2/oKFgjRaOq3J47LoQY+nfCwlMqPyVPkFlGcw== X-Received: by 2002:adf:8b5c:: with SMTP id v28mr2254407wra.272.1615860827676; Mon, 15 Mar 2021 19:13:47 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:46 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 19/29] tree-walk.h API: formatting changes for subsequent commit Date: Tue, 16 Mar 2021 03:13:02 +0100 Message-Id: <20210316021312.13927-20-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Do formatting (mainly whitespace) changes of code around the get_tree_entry() function to make a subsequent change where we'll add a sister function easier to read. Signed-off-by: Ævar Arnfjörð Bjarmason --- blame.c | 5 +++-- tree-walk.c | 9 ++++++--- tree-walk.h | 12 ++++++++---- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/blame.c b/blame.c index a5044fcfaa6..83babc41d08 100644 --- a/blame.c +++ b/blame.c @@ -102,9 +102,10 @@ static void verify_working_tree_path(struct repository *r, const struct object_id *commit_oid = &parents->item->object.oid; struct object_id blob_oid; unsigned short mode; + int ret = get_tree_entry(r, commit_oid, path, &blob_oid, + &mode); - if (!get_tree_entry(r, commit_oid, path, &blob_oid, &mode) && - oid_object_info(r, &blob_oid, NULL) == OBJ_BLOB) + if (!ret && oid_object_info(r, &blob_oid, NULL) == OBJ_BLOB) return; } diff --git a/tree-walk.c b/tree-walk.c index 6e9161901d8..e88187e3714 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -591,7 +591,8 @@ static int find_tree_entry(struct repository *r, struct tree_desc *t, oidcpy(result, &oid); return 0; } - return get_tree_entry(r, &oid, name + entrylen, result, mode); + return get_tree_entry(r, &oid, name + entrylen, result, + mode); } return -1; } @@ -622,7 +623,8 @@ int get_tree_entry(struct repository *r, } else { struct tree_desc t; init_tree_desc(&t, tree, size); - retval = find_tree_entry(r, &t, name, oid, mode); + retval = find_tree_entry(r, &t, name, oid, + mode); } free(tree); return retval; @@ -748,7 +750,8 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct repository *r, /* Look up the first (or only) path component in the tree. */ find_result = find_tree_entry(r, &t, namebuf.buf, - ¤t_tree_oid, mode); + ¤t_tree_oid, + mode); if (find_result) { goto done; } diff --git a/tree-walk.h b/tree-walk.h index 9f3825d2773..478a659ee2b 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -169,10 +169,14 @@ struct traverse_info { /** * Find an entry in a tree given a pathname and the sha1 of a tree to - * search. Returns 0 if the entry is found and -1 otherwise. The third - * and fourth parameters are set to the entry's sha1 and mode respectively. - */ -int get_tree_entry(struct repository *, const struct object_id *, const char *, struct object_id *, unsigned short *); + * search. Returns 0 if the entry is found and -1 otherwise. + * + * The third and fourth parameters are set to the entry's sha1 and + * mode respectively. + */ +int get_tree_entry(struct repository *, const struct object_id *, const char *, + struct object_id *, + unsigned short *); /** * Generate the full pathname of a tree entry based from the root of the From patchwork Tue Mar 16 02:13:03 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141037 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.8 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 54BC0C4332D for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2A5976502A for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234569AbhCPCOW (ORCPT ); Mon, 15 Mar 2021 22:14:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231217AbhCPCNu (ORCPT ); Mon, 15 Mar 2021 22:13:50 -0400 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1E6A1C061762 for ; Mon, 15 Mar 2021 19:13:50 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id 12so4203843wmf.5 for ; Mon, 15 Mar 2021 19:13: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=lSnOoQ4PEi3NQt4nfUjymhSjU1LCc6F2l1kHCtsuNGg=; b=DswYWHKp5chMQUqZG3cFHTS/b6gzJ0UaG1n0/ki1wFA6yVVCvYxpPk2bCcrqvfGsMB f/TqjkY6E+bgSMbxAanvPuzxLlIllVFdCPLtUxAPpS2AyB7XTyCtBxCsIsM4R5sLeRDE w0VfnBZjchAqvgdMJ0L+BPMKBd91Ru+oA8ex2LvLKRVrHWULNiZCQuSs+QzU0e+FMpIS lctaNevqwSbDY45M6b9fXjxYVKetEq1JXng9BQrAspHXA5zEBBHxxGIBkQVSo5sqX1mp qYMHSlEIN56KQMMVxmHvgWnboA8QYUkc+mQD6z6RlS85C68bN8sb+wFhttcuu8+SzgHX QFng== 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=lSnOoQ4PEi3NQt4nfUjymhSjU1LCc6F2l1kHCtsuNGg=; b=YyIEedurjdlQNmFHh1m3zi45qkqsXvPwbQpmScp39TEIBpqKeHhQ45xpb7sy9n7gFu yg8RVnALJ9EWgWpKlQzTiN/ggefAyIwdJ8gF0hDPwWYeqg0jltUpUXnV5r2Myxy9tC9P i9B2ytSeZO0R4bZeTq9R8oVgpbQuYPUteKsj1GM8XyQHJ52LBrvvNpJWNBX246xkDu+L oKX5r0obtdvb8RP29xCG7CHmrc/tP2wAU0l+wzgrSDSy4UNaTDufo77boSMFyxqrh+QP Q1mBHMJQMDqRx5JCU/xMpDs4FSm/cvdo7Fl9ZVtAuo+ZQnlYqmHvlCMmMWRZv4vpoRvF s9lA== X-Gm-Message-State: AOAM531X2wr/eST6irfDDrRp/HPrX0Soo03uhVkAeIguBTQ3HE8edHcb r/Cjc4fEY5hVxBndKl+GnHlNXbzpzecRng== X-Google-Smtp-Source: ABdhPJzZfFGai226aqZWeImw/tj31r1HBZQ/QTUoNi3+Gh06NadDyzivGm4GqZtqLuN+bCMsX375AQ== X-Received: by 2002:a05:600c:2301:: with SMTP id 1mr2338302wmo.36.1615860828551; Mon, 15 Mar 2021 19:13:48 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:47 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 20/29] tree-walk.h API: rename get_tree_entry() to get_tree_entry_mode() Date: Tue, 16 Mar 2021 03:13:03 +0100 Message-Id: <20210316021312.13927-21-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Rename the get_tree_entry() function to get_tree_entry_mode(). This change is only a search-replacement of the name and indentation of the argument lists. A subsequent commits will add get_tree_entry_type() and get_tree_entry_all() functions. Those changes will be much easier to read if we do this rename first. Signed-off-by: Ævar Arnfjörð Bjarmason --- archive.c | 8 ++++---- blame.c | 6 +++--- builtin/rm.c | 2 +- builtin/update-index.c | 2 +- line-log.c | 2 +- match-trees.c | 6 +++--- merge-recursive.c | 18 +++++++++--------- notes.c | 2 +- object-name.c | 6 +++--- tree-walk.c | 14 +++++++------- tree-walk.h | 6 +++--- 11 files changed, 36 insertions(+), 36 deletions(-) diff --git a/archive.c b/archive.c index 254e15c8d03..ab031079580 100644 --- a/archive.c +++ b/archive.c @@ -482,10 +482,10 @@ static void parse_treeish_arg(const char **argv, unsigned short mode; int err; - err = get_tree_entry(ar_args->repo, - &tree->object.oid, - prefix, &tree_oid, - &mode); + err = get_tree_entry_mode(ar_args->repo, + &tree->object.oid, + prefix, &tree_oid, + &mode); if (err || !S_ISDIR(mode)) die(_("current working directory is untracked")); diff --git a/blame.c b/blame.c index 83babc41d08..9e0543e13d4 100644 --- a/blame.c +++ b/blame.c @@ -102,8 +102,8 @@ static void verify_working_tree_path(struct repository *r, const struct object_id *commit_oid = &parents->item->object.oid; struct object_id blob_oid; unsigned short mode; - int ret = get_tree_entry(r, commit_oid, path, &blob_oid, - &mode); + int ret = get_tree_entry_mode(r, commit_oid, path, &blob_oid, + &mode); if (!ret && oid_object_info(r, &blob_oid, NULL) == OBJ_BLOB) return; @@ -1239,7 +1239,7 @@ static int fill_blob_sha1_and_mode(struct repository *r, { if (!is_null_oid(&origin->blob_oid)) return 0; - if (get_tree_entry(r, &origin->commit->object.oid, origin->path, &origin->blob_oid, &origin->mode)) + if (get_tree_entry_mode(r, &origin->commit->object.oid, origin->path, &origin->blob_oid, &origin->mode)) goto error_out; if (oid_object_info(r, &origin->blob_oid, NULL) != OBJ_BLOB) goto error_out; diff --git a/builtin/rm.c b/builtin/rm.c index 4858631e0f0..4617388b29a 100644 --- a/builtin/rm.c +++ b/builtin/rm.c @@ -179,7 +179,7 @@ static int check_local_mod(struct object_id *head, int index_only) * way as changed from the HEAD. */ if (no_head - || get_tree_entry(the_repository, head, name, &oid, &mode) + || get_tree_entry_mode(the_repository, head, name, &oid, &mode) || ce->ce_mode != create_ce_mode(mode) || !oideq(&ce->oid, &oid)) staged_changes = 1; diff --git a/builtin/update-index.c b/builtin/update-index.c index 79087bccea4..070510d6a88 100644 --- a/builtin/update-index.c +++ b/builtin/update-index.c @@ -603,7 +603,7 @@ static struct cache_entry *read_one_ent(const char *which, struct object_id oid; struct cache_entry *ce; - if (get_tree_entry(the_repository, ent, path, &oid, &mode)) { + if (get_tree_entry_mode(the_repository, ent, path, &oid, &mode)) { if (which) error("%s: not in %s branch.", path, which); return NULL; diff --git a/line-log.c b/line-log.c index 75c8b1acfff..4790dda4607 100644 --- a/line-log.c +++ b/line-log.c @@ -503,7 +503,7 @@ static void fill_blob_sha1(struct repository *r, struct commit *commit, unsigned short mode; struct object_id oid; - if (get_tree_entry(r, &commit->object.oid, spec->path, &oid, &mode)) + if (get_tree_entry_mode(r, &commit->object.oid, spec->path, &oid, &mode)) die("There is no path %s in the commit", spec->path); fill_filespec(spec, &oid, 1, mode); diff --git a/match-trees.c b/match-trees.c index f3e192ca74d..0faacd8f4ae 100644 --- a/match-trees.c +++ b/match-trees.c @@ -293,7 +293,7 @@ void shift_tree(struct repository *r, if (!*del_prefix) return; - if (get_tree_entry(r, hash2, del_prefix, shifted, &mode)) + if (get_tree_entry_mode(r, hash2, del_prefix, shifted, &mode)) die("cannot find path %s in tree %s", del_prefix, oid_to_hex(hash2)); return; @@ -321,12 +321,12 @@ void shift_tree_by(struct repository *r, unsigned candidate = 0; /* Can hash2 be a tree at shift_prefix in tree hash1? */ - if (!get_tree_entry(r, hash1, shift_prefix, &sub1, &mode1) && + if (!get_tree_entry_mode(r, hash1, shift_prefix, &sub1, &mode1) && S_ISDIR(mode1)) candidate |= 1; /* Can hash1 be a tree at shift_prefix in tree hash2? */ - if (!get_tree_entry(r, hash2, shift_prefix, &sub2, &mode2) && + if (!get_tree_entry_mode(r, hash2, shift_prefix, &sub2, &mode2) && S_ISDIR(mode2)) candidate |= 2; diff --git a/merge-recursive.c b/merge-recursive.c index df4b369902f..bbbb68e15bc 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -487,7 +487,7 @@ static int get_tree_entry_if_blob(struct repository *r, { int ret; - ret = get_tree_entry(r, tree, path, &dfs->oid, &dfs->mode); + ret = get_tree_entry_mode(r, tree, path, &dfs->oid, &dfs->mode); if (S_ISDIR(dfs->mode)) { oidcpy(&dfs->oid, &null_oid); dfs->mode = 0; @@ -1886,9 +1886,9 @@ static int tree_has_path(struct repository *r, struct tree *tree, struct object_id hashy; unsigned short mode_o; - return !get_tree_entry(r, - &tree->object.oid, path, - &hashy, &mode_o); + return !get_tree_entry_mode(r, + &tree->object.oid, path, + &hashy, &mode_o); } /* @@ -2541,11 +2541,11 @@ static void apply_directory_rename_modifications(struct merge_options *opt, * the various handle_rename_*() functions update the index * explicitly rather than relying on unpack_trees() to have done it. */ - get_tree_entry(opt->repo, - &tree->object.oid, - pair->two->path, - &re->dst_entry->stages[stage].oid, - &re->dst_entry->stages[stage].mode); + get_tree_entry_mode(opt->repo, + &tree->object.oid, + pair->two->path, + &re->dst_entry->stages[stage].oid, + &re->dst_entry->stages[stage].mode); /* * Record the original change status (or 'type' of change). If it diff --git a/notes.c b/notes.c index 688d03ee9cd..ef138606146 100644 --- a/notes.c +++ b/notes.c @@ -1021,7 +1021,7 @@ void init_notes(struct notes_tree *t, const char *notes_ref, return; if (flags & NOTES_INIT_WRITABLE && read_ref(notes_ref, &object_oid)) die("Cannot use notes ref %s", notes_ref); - if (get_tree_entry(the_repository, &object_oid, "", &oid, &mode)) + if (get_tree_entry_mode(the_repository, &object_oid, "", &oid, &mode)) die("Failed to read notes tree referenced by %s (%s)", notes_ref, oid_to_hex(&object_oid)); diff --git a/object-name.c b/object-name.c index 64202de60b1..7e3b2d6d739 100644 --- a/object-name.c +++ b/object-name.c @@ -1704,7 +1704,7 @@ static void diagnose_invalid_oid_path(struct repository *r, if (is_missing_file_error(errno)) { char *fullname = xstrfmt("%s%s", prefix, filename); - if (!get_tree_entry(r, tree_oid, fullname, &oid, &mode)) { + if (!get_tree_entry_mode(r, tree_oid, fullname, &oid, &mode)) { die(_("path '%s' exists, but not '%s'\n" "hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"), fullname, @@ -1903,8 +1903,8 @@ static enum get_oid_result get_oid_with_context_1(struct repository *repo, filename, oid, &oc->symlink_path, &oc->mode); } else { - ret = get_tree_entry(repo, &tree_oid, filename, oid, - &oc->mode); + ret = get_tree_entry_mode(repo, &tree_oid, filename, oid, + &oc->mode); if (ret && only_to_die) { diagnose_invalid_oid_path(repo, prefix, filename, diff --git a/tree-walk.c b/tree-walk.c index e88187e3714..7819ff3e0ec 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -591,17 +591,17 @@ static int find_tree_entry(struct repository *r, struct tree_desc *t, oidcpy(result, &oid); return 0; } - return get_tree_entry(r, &oid, name + entrylen, result, - mode); + return get_tree_entry_mode(r, &oid, name + entrylen, result, + mode); } return -1; } -int get_tree_entry(struct repository *r, - const struct object_id *tree_oid, - const char *name, - struct object_id *oid, - unsigned short *mode) +int get_tree_entry_mode(struct repository *r, + const struct object_id *tree_oid, + const char *name, + struct object_id *oid, + unsigned short *mode) { int retval; void *tree; diff --git a/tree-walk.h b/tree-walk.h index 478a659ee2b..eb9b9de6ccc 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -174,9 +174,9 @@ struct traverse_info { * The third and fourth parameters are set to the entry's sha1 and * mode respectively. */ -int get_tree_entry(struct repository *, const struct object_id *, const char *, - struct object_id *, - unsigned short *); +int get_tree_entry_mode(struct repository *, const struct object_id *, const char *, + struct object_id *, + unsigned short *); /** * Generate the full pathname of a tree entry based from the root of the From patchwork Tue Mar 16 02:13:04 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141039 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.8 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 8B9E4C4332E for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4A42765024 for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234575AbhCPCOY (ORCPT ); Mon, 15 Mar 2021 22:14:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234505AbhCPCNv (ORCPT ); Mon, 15 Mar 2021 22:13:51 -0400 Received: from mail-wr1-x429.google.com (mail-wr1-x429.google.com [IPv6:2a00:1450:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 13E90C061762 for ; Mon, 15 Mar 2021 19:13:51 -0700 (PDT) Received: by mail-wr1-x429.google.com with SMTP id j2so9643329wrx.9 for ; Mon, 15 Mar 2021 19:13: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=v/EUe0RS08UvXCr/QRKhBQGnZARPUkvw6TX6lcOsPQU=; b=FdapUcfNfDScwhKkwO9X4g/K+Z76pXFdaIXgbomKvUfGTKmurQ+IpOG2d6/bext5Zv 9UESVGa3lyWKOCyEHwSoZPXFrNYTfIyuv7tPmon5WgCs71piXTeyaYwpzxpA1zfVNdmf iDUxwXSx2+Kb1CZDF12rKyOHix2tqstIo8jrFh8EwbeTdQvdBm9AWGgfJipCD7Q13BU9 64289P+YxBimiH9IEnVbfzKdHmhGouWPxvh55CnoeFUVeYTh3qjGYrL0zVzqBpjm2ha7 xJEvr6fKQTKtmpzTYDNrdlcaSbS7M/AIayaXK6BYbmVvXmqGwQlnusyIWfzPEeMPYG3z SgWg== 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=v/EUe0RS08UvXCr/QRKhBQGnZARPUkvw6TX6lcOsPQU=; b=OdZOzo5LzlgXikAPF6mlXMKyYveU9NjQMzBIwLBe+23iH5QOvC78HuHCXz5jFuLwWb UjNCcEt6SOTiGEkgs0p810hxEDmx2ZsWHYCMQai6MDjlZRudUV9d5aPFxvJLPqpnYSok CH8Rr64UndlCr4sOvK4qW5H9Su0C2dataJ8b1BStxCu/B57FCXjpnYRuzicmKnXt5pKA ii1jv5Bfcj8KpGjDgvVnZLfaGkznJr78uhacyUe9JY9RL55L02vTyAUpDc98AXQGqxlF pRGlRag1lH5kPmvI2lz95aZJBtyrvghnzhAUmAwhkD2+svn+fRsHILrtGDEf5U8u8dbN UGDQ== X-Gm-Message-State: AOAM532Oc9M3TJeqVmstTH4j77KWjkB4UoSDTnmlqbAoweMhA6CwZuVF lSpqs3N1JAUp3zrUZtzAMZXC55fKqCCZvg== X-Google-Smtp-Source: ABdhPJzi+M6D0gqQs9dbmaMB7oLd2rqR1PoP9XVjuhlv2N/P+BOKUnyBbU1ZEXcpq0ns7L6j+ph+UA== X-Received: by 2002:a05:6000:221:: with SMTP id l1mr2255246wrz.370.1615860829584; Mon, 15 Mar 2021 19:13:49 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:48 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 21/29] tree-walk.h API users: use "tmp" for mode in shift_tree_by() Date: Tue, 16 Mar 2021 03:13:04 +0100 Message-Id: <20210316021312.13927-22-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Refactor code added in 85e51b783c3 (Make "subtree" part more orthogonal to the rest of merge-recursive., 2008-06-30) to make it obvious that we don't care about the "mode" here outside of the if statement it appears in. That's opposed to the sub1 & sub2 variables, where we use the two object ids later in this function. Signed-off-by: Ævar Arnfjörð Bjarmason --- match-trees.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/match-trees.c b/match-trees.c index 0faacd8f4ae..e84f993a460 100644 --- a/match-trees.c +++ b/match-trees.c @@ -317,17 +317,17 @@ void shift_tree_by(struct repository *r, const char *shift_prefix) { struct object_id sub1, sub2; - unsigned short mode1, mode2; + unsigned short tmp; unsigned candidate = 0; /* Can hash2 be a tree at shift_prefix in tree hash1? */ - if (!get_tree_entry_mode(r, hash1, shift_prefix, &sub1, &mode1) && - S_ISDIR(mode1)) + if (!get_tree_entry_mode(r, hash1, shift_prefix, &sub1, &tmp) && + S_ISDIR(tmp)) candidate |= 1; /* Can hash1 be a tree at shift_prefix in tree hash2? */ - if (!get_tree_entry_mode(r, hash2, shift_prefix, &sub2, &mode2) && - S_ISDIR(mode2)) + if (!get_tree_entry_mode(r, hash2, shift_prefix, &sub2, &tmp) && + S_ISDIR(tmp)) candidate |= 2; if (candidate == 3) { From patchwork Tue Mar 16 02:13:05 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141043 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.8 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 E45C0C43331 for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CAC5F6502F for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234577AbhCPCOY (ORCPT ); Mon, 15 Mar 2021 22:14:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234507AbhCPCNw (ORCPT ); Mon, 15 Mar 2021 22:13:52 -0400 Received: from mail-wm1-x331.google.com (mail-wm1-x331.google.com [IPv6:2a00:1450:4864:20::331]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FABDC06174A for ; Mon, 15 Mar 2021 19:13:52 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id u5-20020a7bcb050000b029010e9316b9d5so554815wmj.2 for ; Mon, 15 Mar 2021 19:13: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=La7V05DB2vWNftwWY/zBzHh6GCUqGYH9OzhvmBmJZJw=; b=ORn8uvij7MDLgWQXPzVslbjeipqrWJTwA2raPGCahIcN61q9mX2iuVhLdZMPLnXcLD 0+aa9MjaQs72xV+RyGDWl76WRl6VVQZ3OLy6MpJWdNhIohb+SUWz6VJRRfFSlxgLoAgH JzY9TgQ/fY6h4IUjvWJsnbiARzXatYZXA8ZDAaf6E8nBjsPlHvJjH4EBhj6c/NtpvXcN U/HrpTsVT2VqACHpqEbkVIID/m9a80gfAvSnUh1Fa09vYIMdIUK5t3ue/GZ4lxOEw58I 5G6Op1jtIlrZQ3KLN6aCa2GaVEdXahT0vnyjYY7rO6YoejnncrypJe4TqZxRPHGlXm5T ++9g== 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=La7V05DB2vWNftwWY/zBzHh6GCUqGYH9OzhvmBmJZJw=; b=Qk4BepagYbNfU31NVvWmw7aE8l/WzjHpA3/OTgJDEbhxosy/M0Fjyn3icEWSP8RVt5 UcsmUQPl1wnKLgubrei2HQiau9xSV9GoiK+ezZHa2Aki2EQtowW8Qd7BvlnRgAygod68 yg32TwjZTbminwopQJziuZWrdD4/9xDr7JOzoew2dTWt55U1nk0D5TW0q8Gabb5Lndug QIUpDKrHUq9uDJb6Ga1LFw3JVeLKUacq/G8W4RRbnwlWGGZJ7pWSMuWKekIo3+snMOpg px1z5DxN8ePCW+Ppcyfm4VjZX6Wo6dHMLfISWHCy3vellVVrYPbJReimXrrr5e/Nuw9h LOyw== X-Gm-Message-State: AOAM530Pb1cWfN72RPT2n/3HpvmGEjzie/ZW6cUW/Xra2ZAzQsl09etb a9FxqBczJU/OawhDt/U9uHKtcpoo2PgGsg== X-Google-Smtp-Source: ABdhPJykG80U4/Q2j4WjvpMxIBTihVhcppGGKIL+9tW1Eg/JghrB/kGyxjdEbzulQUYzv7YPfrZcxQ== X-Received: by 2002:a05:600c:22c7:: with SMTP id 7mr2274052wmg.85.1615860830294; Mon, 15 Mar 2021 19:13:50 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:49 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 22/29] tree-walk.h API: add get_tree_entry_type() Date: Tue, 16 Mar 2021 03:13:05 +0100 Message-Id: <20210316021312.13927-23-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a get_tree_entry_type() helper function to compliment the existing get_tree_entry(), and a static get_tree_entry_all() which it uses internally. Move those users of get_tree_entry_type() who didn't care about the mode specifically, but just want to know whether the tree entry is one of OBJ_{BLOB,COMMIT,TREE} over to the new get_tree_entry_type(). The get_tree_entry_all() function itself will be made non-static in a subsequent commit. I'm leaving its argument list indented accordingly to reduce churn when I do so. Signed-off-by: Ævar Arnfjörð Bjarmason --- archive.c | 8 ++++---- match-trees.c | 10 +++++----- tree-walk.c | 54 ++++++++++++++++++++++++++++++++++++++++----------- tree-walk.h | 11 +++++++++-- 4 files changed, 61 insertions(+), 22 deletions(-) diff --git a/archive.c b/archive.c index ab031079580..d6aef83b692 100644 --- a/archive.c +++ b/archive.c @@ -479,14 +479,14 @@ static void parse_treeish_arg(const char **argv, if (prefix) { struct object_id tree_oid; - unsigned short mode; + enum object_type object_type; int err; - err = get_tree_entry_mode(ar_args->repo, + err = get_tree_entry_type(ar_args->repo, &tree->object.oid, prefix, &tree_oid, - &mode); - if (err || !S_ISDIR(mode)) + &object_type); + if (err || object_type != OBJ_TREE) die(_("current working directory is untracked")); tree = parse_tree_indirect(&tree_oid); diff --git a/match-trees.c b/match-trees.c index e84f993a460..3177558313e 100644 --- a/match-trees.c +++ b/match-trees.c @@ -317,17 +317,17 @@ void shift_tree_by(struct repository *r, const char *shift_prefix) { struct object_id sub1, sub2; - unsigned short tmp; + enum object_type tmp; unsigned candidate = 0; /* Can hash2 be a tree at shift_prefix in tree hash1? */ - if (!get_tree_entry_mode(r, hash1, shift_prefix, &sub1, &tmp) && - S_ISDIR(tmp)) + if (!get_tree_entry_type(r, hash1, shift_prefix, &sub1, &tmp) && + tmp == OBJ_TREE) candidate |= 1; /* Can hash1 be a tree at shift_prefix in tree hash2? */ - if (!get_tree_entry_mode(r, hash2, shift_prefix, &sub2, &tmp) && - S_ISDIR(tmp)) + if (!get_tree_entry_type(r, hash2, shift_prefix, &sub2, &tmp) && + tmp == OBJ_TREE) candidate |= 2; if (candidate == 3) { diff --git a/tree-walk.c b/tree-walk.c index 7819ff3e0ec..46ce1ba8069 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -559,9 +559,17 @@ struct dir_state { struct object_id oid; }; +static int get_tree_entry_all(struct repository *r, + const struct object_id *tree_oid, + const char *name, + struct object_id *oid, + unsigned short *mode, + enum object_type *object_type); + static int find_tree_entry(struct repository *r, struct tree_desc *t, const char *name, struct object_id *result, - unsigned short *mode) + unsigned short *mode, + enum object_type *object_type) { int namelen = strlen(name); while (t->size) { @@ -585,23 +593,24 @@ static int find_tree_entry(struct repository *r, struct tree_desc *t, } if (name[entrylen] != '/') continue; - if (!S_ISDIR(*mode)) + if (*object_type != OBJ_TREE) break; if (++entrylen == namelen) { oidcpy(result, &oid); return 0; } - return get_tree_entry_mode(r, &oid, name + entrylen, result, - mode); + return get_tree_entry_all(r, &oid, name + entrylen, result, + mode, object_type); } return -1; } -int get_tree_entry_mode(struct repository *r, - const struct object_id *tree_oid, - const char *name, - struct object_id *oid, - unsigned short *mode) +static int get_tree_entry_all(struct repository *r, + const struct object_id *tree_oid, + const char *name, + struct object_id *oid, + unsigned short *mode, + enum object_type *object_type) { int retval; void *tree; @@ -624,12 +633,34 @@ int get_tree_entry_mode(struct repository *r, struct tree_desc t; init_tree_desc(&t, tree, size); retval = find_tree_entry(r, &t, name, oid, - mode); + mode, object_type); } free(tree); return retval; } +int get_tree_entry_mode(struct repository *r, + const struct object_id *tree_oid, + const char *name, + struct object_id *oid, + unsigned short *mode) +{ + enum object_type object_type; + return get_tree_entry_all(r, tree_oid, name, oid, + mode, &object_type); +} + +int get_tree_entry_type(struct repository *r, + const struct object_id *tree_oid, + const char *name, + struct object_id *oid, + enum object_type *object_type) +{ + unsigned short mode; + return get_tree_entry_all(r, tree_oid, name, oid, + &mode, object_type); +} + /* * This is Linux's built-in max for the number of symlinks to follow. * That limit, of course, does not affect git, but it's a reasonable @@ -674,6 +705,7 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct repository *r, int find_result; char *first_slash; char *remainder = NULL; + enum object_type object_type; if (!t.buffer) { void *tree; @@ -751,7 +783,7 @@ enum get_oid_result get_tree_entry_follow_symlinks(struct repository *r, /* Look up the first (or only) path component in the tree. */ find_result = find_tree_entry(r, &t, namebuf.buf, ¤t_tree_oid, - mode); + mode, &object_type); if (find_result) { goto done; } diff --git a/tree-walk.h b/tree-walk.h index eb9b9de6ccc..f569960c6fb 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -171,12 +171,19 @@ struct traverse_info { * Find an entry in a tree given a pathname and the sha1 of a tree to * search. Returns 0 if the entry is found and -1 otherwise. * - * The third and fourth parameters are set to the entry's sha1 and - * mode respectively. + * There are variants of this function depending on what fields in the + * "struct name_entry" you'd like. You always need a pointer to an + * appropriate variable to fill in (NULL won't do!): + * + * get_tree_entry_mode(): unsigned int mode + * get_tree_entry_type(): enum object_type */ int get_tree_entry_mode(struct repository *, const struct object_id *, const char *, struct object_id *, unsigned short *); +int get_tree_entry_type(struct repository *, const struct object_id *, const char *, + struct object_id *, + enum object_type *); /** * Generate the full pathname of a tree entry based from the root of the From patchwork Tue Mar 16 02:13:06 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141041 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.8 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 CFA10C43332 for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9F7916501A for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234579AbhCPCO0 (ORCPT ); Mon, 15 Mar 2021 22:14:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234508AbhCPCNx (ORCPT ); Mon, 15 Mar 2021 22:13:53 -0400 Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DEA51C06174A for ; Mon, 15 Mar 2021 19:13:52 -0700 (PDT) Received: by mail-wm1-x334.google.com with SMTP id t5-20020a1c77050000b029010e62cea9deso576779wmi.0 for ; Mon, 15 Mar 2021 19:13:52 -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=ZcGjxvB15e4xg9sWVsTvYdaJhzJ12f6No+s5qBl1k84=; b=nahYGWG9znqE2TPJWcmOU+LsAS3u8mo51vGWdxcohiooDb/pAuhmVMdXMt3HWLOp7G gcElqeZyyJTaGYoZ2gRriANlL+yJX3T8zGyLeTxE5vvJZDX83oklSrYU7w6YX/tgQ2Bf mQgKgUWuSVXgmr8oDlDAE0e160CKHvYN0vpoLk4tMdwvGdtMFXycR2j2FCfBJjOGz/0d Cyatcq2lMMk9QjkcJCu+AEPhsCgI1eqNwJ49G/sttRbaq0k2LunSZiycA3wL4I7GC0ka KOQpoIWb7ojHxkfvnQVH1c6hOY0ALe+6sRCpcmnLdv4L2scggW64cf6OKPeohlpFnCvV gDJA== 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=ZcGjxvB15e4xg9sWVsTvYdaJhzJ12f6No+s5qBl1k84=; b=XJIoOh5fpolHqM2Ek/+zIiffMxrert1og9Elqgd/JGd3UGkA6VTJvjuv3m/g4kke9/ HhLYnzZMJVt/LQizZxV0+GLiCAMDQN9tajIQOUAWwNpJcsD+bw1dfean0TL42IRi600Z CLoUDK3y3WwRukU+HjLLdrA7O7XrMRJSOKnzdYj0fwwV0gP1bn/E6r+IVm7klKzBQJJX BnWAKrZmRCjRSF0twqoqWzKKBu6Q6xuCr2/KdPP6/cdg+I6G8FuTbywU8N/3jS8S5mE+ TY0r+QRk7jRLPkP4zYvEBASLRPq6GwVs7OEbECNoQK0JSpkB8Ym71Mbrx54QedmavUCb 7qnQ== X-Gm-Message-State: AOAM530AyCR8R+6ddAfxUOxCJ8bTRPlcjjTMSUqJ8vFPGmQ87rg4FJnW 2vihOiqZdkvJGd7euNspY7M5gKg0i/EYkQ== X-Google-Smtp-Source: ABdhPJxqy3plP325AId73D+wqyVgpz1UOf1Cj5SOUMmcRxGARGsuRaCYSHX1vL88W8F4aQgxiKgDCw== X-Received: by 2002:a7b:ce91:: with SMTP id q17mr2350050wmj.28.1615860831323; Mon, 15 Mar 2021 19:13:51 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:50 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 23/29] tree-walk.h API: document and format tree_entry_extract() Date: Tue, 16 Mar 2021 03:13:06 +0100 Message-Id: <20210316021312.13927-24-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Document and format the argument list of the tree_entry_extract() function in preparation for adding a sister function. Signed-off-by: Ævar Arnfjörð Bjarmason --- tree-walk.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tree-walk.h b/tree-walk.h index f569960c6fb..f51485250fb 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -40,11 +40,17 @@ struct tree_desc { /** * Decode the entry currently being visited (the one pointed to by - * `tree_desc's` `entry` member) and return the sha1 of the entry. The - * `pathp` and `modep` arguments are set to the entry's pathname and mode - * respectively. + * `tree_desc's` `entry` member) and return the OID of the entry. + * + * There are variants of this function depending on what fields in the + * "struct name_entry" you'd like. You always need a pointer to an + * appropriate variable to fill in (NULL won't do!): + * + * tree_entry_extract_mode(): const char *path, unsigned int mode */ -static inline const struct object_id *tree_entry_extract(struct tree_desc *desc, const char **pathp, unsigned short *modep) +static inline const struct object_id *tree_entry_extract(struct tree_desc *desc, + const char **pathp, + unsigned short *modep) { *pathp = desc->entry.path; *modep = desc->entry.mode; From patchwork Tue Mar 16 02:13:07 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141047 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.8 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 152FDC43333 for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 02A9D65032 for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234584AbhCPCO1 (ORCPT ); Mon, 15 Mar 2021 22:14:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234516AbhCPCNy (ORCPT ); Mon, 15 Mar 2021 22:13:54 -0400 Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BC21EC06174A for ; Mon, 15 Mar 2021 19:13:53 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id b9so6658659wrt.8 for ; Mon, 15 Mar 2021 19:13: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=zOEKyH1dNIeFXPurPX3RtDhfc3plr4uGW5cRjBacpPE=; b=AFNp8FTdR1/2a29FCT2pVKJeZmWBLE08r+jYKZdAyDQuDJaYvkaGDlVolft0XG/LqO YtALBN5baXbIejBtbTaoT4FKuugeuZNh0h+2bSMPRSOMLQQdqx/c0eAZxsncCq5Bm9Uc pExWdib5G72ZK6aeLs6B76fzG8s5gAYqbDDI/IrIpx06nvVRgb42arEEB9xGHU+aSKd3 x7/jlLdguXEEurAb/NoIAQ+7HwfaRc2DwTLdfhLu00AznpGg1LKtmahoWkN01/oOMO/l 0LZt4VTp2ImDTYyRcyeZn7+V06U2clXxTROHyvar0MjwSAYeijgc5Gy0dmIko/JhtA18 kNuA== 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=zOEKyH1dNIeFXPurPX3RtDhfc3plr4uGW5cRjBacpPE=; b=nJlNmalTbBj4Q26S35VdaTtArl8IzJy2Kidn8Pci5oRLS3nvxQ++ZQX08lkEkx2fWx mJf9khzAUn3WUmh+Y7PM0AiJqDndHlLPmVSwGq/WxD9Jf3fmE+6LnNbl1DXmW9cjoEsT b+xu0nB4V6uQhhf+0Ep+veDRolvn+qwTMlGMLOxteg2DvzOOsEtZaHuoLqnFzHD9o+DY ERd/c2WhV++rj1awPVzkptAo46RHo2NhGk3HGcEo1BVQ/5WboZjDVqVd3H+twlxip9Q6 QusG/aJqxHuJW+FxCeTukXfnc0PdEV0JrWA+aLmm3ByF2yCRymBbIBtR7ICilmlgdMQA Ucng== X-Gm-Message-State: AOAM531vK+LTsZg2vrWyRfawgMmV9cqa/eaxjmRzA9imipL8k9kby8m9 Iy9O6ZH+qAkDOgRVYqvHCOnUerbfIUaUKw== X-Google-Smtp-Source: ABdhPJzgKjljT1wQEjf0MibXRm4CwX09lzHprtBwu6AMtMQUyhMpPfErDnRvjQtwFz9gv6dvNWo8BA== X-Received: by 2002:a5d:4485:: with SMTP id j5mr2193285wrq.339.1615860832260; Mon, 15 Mar 2021 19:13:52 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:51 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 24/29] tree-entry.h API: rename tree_entry_extract() to tree_entry_extract_mode() Date: Tue, 16 Mar 2021 03:13:07 +0100 Message-Id: <20210316021312.13927-25-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org As with the recent split of the get_tree_entry() function, rename the tree_entry_extract() function to *_mode() in preparation for adding other variants of it. Signed-off-by: Ævar Arnfjörð Bjarmason --- fsck.c | 2 +- match-trees.c | 4 ++-- tree-diff.c | 4 ++-- tree-walk.h | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/fsck.c b/fsck.c index 7c74c49d329..11678ba5826 100644 --- a/fsck.c +++ b/fsck.c @@ -670,7 +670,7 @@ static int fsck_tree(const struct object_id *oid, const char *name, *backslash; const struct object_id *oid; - oid = tree_entry_extract(&desc, &name, &mode); + oid = tree_entry_extract_mode(&desc, &name, &mode); has_null_sha1 |= is_null_oid(oid); has_full_path |= !!strchr(name, '/'); diff --git a/match-trees.c b/match-trees.c index 3177558313e..2afa4968109 100644 --- a/match-trees.c +++ b/match-trees.c @@ -146,7 +146,7 @@ static void match_trees(const struct object_id *hash1, unsigned short mode; int score; - elem = tree_entry_extract(&one, &path, &mode); + elem = tree_entry_extract_mode(&one, &path, &mode); if (!S_ISDIR(mode)) goto next; score = score_trees(elem, hash2); @@ -202,7 +202,7 @@ static int splice_tree(const struct object_id *oid1, const char *prefix, unsigned short mode; int len = tree_entry_len(&desc.entry); - tree_entry_extract(&desc, &name, &mode); + tree_entry_extract_mode(&desc, &name, &mode); if (len == toplen && !memcmp(name, prefix, toplen)) { if (!S_ISDIR(mode)) diff --git a/tree-diff.c b/tree-diff.c index 088ed52d6a3..65c7e4dbc8b 100644 --- a/tree-diff.c +++ b/tree-diff.c @@ -196,7 +196,7 @@ static struct combine_diff_path *emit_path(struct combine_diff_path *p, if (t) { /* path present in resulting tree */ - oid = tree_entry_extract(t, &path, &mode); + oid = tree_entry_extract_mode(t, &path, &mode); pathlen = tree_entry_len(&t->entry); isdir = S_ISDIR(mode); } else { @@ -207,7 +207,7 @@ static struct combine_diff_path *emit_path(struct combine_diff_path *p, * 1) all modes for tp[i]=tp[imin] should be the same wrt * S_ISDIR, thanks to base_name_compare(). */ - tree_entry_extract(&tp[imin], &path, &mode); + tree_entry_extract_mode(&tp[imin], &path, &mode); pathlen = tree_entry_len(&tp[imin].entry); isdir = S_ISDIR(mode); diff --git a/tree-walk.h b/tree-walk.h index f51485250fb..805cda649ee 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -48,9 +48,9 @@ struct tree_desc { * * tree_entry_extract_mode(): const char *path, unsigned int mode */ -static inline const struct object_id *tree_entry_extract(struct tree_desc *desc, - const char **pathp, - unsigned short *modep) +static inline const struct object_id *tree_entry_extract_mode(struct tree_desc *desc, + const char **pathp, + unsigned short *modep) { *pathp = desc->entry.path; *modep = desc->entry.mode; From patchwork Tue Mar 16 02:13:08 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141051 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.8 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 06457C432C3 for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E233365027 for ; Tue, 16 Mar 2021 02:14:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234581AbhCPCO0 (ORCPT ); Mon, 15 Mar 2021 22:14:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234517AbhCPCNy (ORCPT ); Mon, 15 Mar 2021 22:13:54 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7451CC06174A for ; Mon, 15 Mar 2021 19:13:54 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id y124-20020a1c32820000b029010c93864955so511106wmy.5 for ; Mon, 15 Mar 2021 19:13:54 -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=QQZX8/LBHtjEz3Qp0uwl02tSEW8LM0mVtrOGaDN6Ucc=; b=JJNV/FcjZJp6iK4s0751o7eAKqZg/PwMHoKX/A2G62KWRE2LnK+p3aQoNQJlWLwTbx qMt43u+IjVgqWKNf5OpgshtlDiRBiIp/f3gyjkeQwzq31dtbrmN4ZA+JJ18pey25vgmS ro8iF5mlBrmBmjqOQ2g5HO4utD60osKLEFxvtYuE6Br/dyEy+cKGsV1IT2O1rpcsDfDV wgJHLkqJqfVWkjA+SrnWf4XeuDugrKbHs3FS/Te75hUvnsDPtZF1FUBDUtTXN9r2qbM+ yugV/FcWgBbu8fULj4Nl80leirjqIJoNvaAWIrmf/k9w7o+N7nePZg6Q4/emOoW9uucq 4Byw== 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=QQZX8/LBHtjEz3Qp0uwl02tSEW8LM0mVtrOGaDN6Ucc=; b=K97OsOLVjgiz7rDg1E9BPSkJ3mg6gI410KOGStC2PpDA+tjZOL2+kbEucYovOyls48 NJnLAvBUR/CTr0s14B5xHwDlopJzHHZozrR9i7MemLmYQoON8aksfmwxMbxQ1l9n8M75 +xn262AlMPy7PlQ/09bdQTRkGmvnHUmhLdtS30j7Eik0dFswK51B2TlD+4q1Dj47MblY RBaUgxDVC3DN1nVvqg8Ssi3dL/3INnhJF8y2Ro7AwT2GQoROOwWmfDwEAtpkvanr/X1x rllvbp1NXkDdcdtf7s9lM3C3D7Z4Gzuhh+84lGZz4bYLqgL8wtNDfW8s1cFxujTOOc0P S3GQ== X-Gm-Message-State: AOAM533/yM6fl3oOuJrOkj4dfTfMilmd1tCQW3NwIjL1Dp5NfYoOx/Pt yWFIcx5bpLzZjbI+NFc2tIjpzMvEeJjt8A== X-Google-Smtp-Source: ABdhPJw/GX6NnZIpvPO9fN6pXxARjk3kVXpoyDuZAGsNrJf1L4/+06n/Ne8Zc84U3fEFFInkyVii6Q== X-Received: by 2002:a1c:7715:: with SMTP id t21mr2237664wmi.132.1615860833008; Mon, 15 Mar 2021 19:13:53 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:52 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 25/29] tree-walk.h API: add a tree_entry_extract_all() function Date: Tue, 16 Mar 2021 03:13:08 +0100 Message-Id: <20210316021312.13927-26-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a tree_entry_extract_all() sibling function to the existing tree_entry_extract_mode(). Having the OBJ_{BLOB,TREE,COMMIT} when you have the "mode" is strictly speaking redundant, but hopefully makes it easier to read the code. We'll now see which parts of the code are checking the types, v.s. those that care about the mode specifically. Only the first use of tree_entry_extract_mode() in emit_path() is converted here, the other branch will use a new get_tree_entry_mode_type() introduced in a subsequent commit. Signed-off-by: Ævar Arnfjörð Bjarmason --- tree-diff.c | 5 +++-- tree-walk.c | 2 +- tree-walk.h | 12 ++++++++++++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/tree-diff.c b/tree-diff.c index 65c7e4dbc8b..918ad95fa61 100644 --- a/tree-diff.c +++ b/tree-diff.c @@ -195,10 +195,11 @@ static struct combine_diff_path *emit_path(struct combine_diff_path *p, assert(t || tp); if (t) { + enum object_type object_type; /* path present in resulting tree */ - oid = tree_entry_extract_mode(t, &path, &mode); + oid = tree_entry_extract_all(t, &path, &mode, &object_type); pathlen = tree_entry_len(&t->entry); - isdir = S_ISDIR(mode); + isdir = (object_type == OBJ_TREE); } else { /* * a path was removed - take path from imin parent. Also take diff --git a/tree-walk.c b/tree-walk.c index 46ce1ba8069..f4473276c9f 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -577,7 +577,7 @@ static int find_tree_entry(struct repository *r, struct tree_desc *t, struct object_id oid; int entrylen, cmp; - oidcpy(&oid, tree_entry_extract(t, &entry, mode)); + oidcpy(&oid, tree_entry_extract_all(t, &entry, mode, object_type)); entrylen = tree_entry_len(&t->entry); update_tree_entry(t); if (entrylen > namelen) diff --git a/tree-walk.h b/tree-walk.h index 805cda649ee..a4c54871747 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -47,6 +47,7 @@ struct tree_desc { * appropriate variable to fill in (NULL won't do!): * * tree_entry_extract_mode(): const char *path, unsigned int mode + * tree_entry_extract_all(): const char *path, unsigned int mode, enum object_type */ static inline const struct object_id *tree_entry_extract_mode(struct tree_desc *desc, const char **pathp, @@ -57,6 +58,17 @@ static inline const struct object_id *tree_entry_extract_mode(struct tree_desc * return &desc->entry.oid; } +static inline const struct object_id *tree_entry_extract_all(struct tree_desc *desc, + const char **pathp, + unsigned short *modep, + enum object_type *object_typep) +{ + *pathp = desc->entry.path; + *modep = desc->entry.mode; + *object_typep = desc->entry.object_type; + return &desc->entry.oid; +} + /** * Calculate the length of a tree entry's pathname. This utilizes the * memory structure of a tree entry to avoid the overhead of using a From patchwork Tue Mar 16 02:13:09 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141045 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.8 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 27127C4321A for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 146D465027 for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234589AbhCPCO2 (ORCPT ); Mon, 15 Mar 2021 22:14:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234519AbhCPCNz (ORCPT ); Mon, 15 Mar 2021 22:13:55 -0400 Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 44157C06174A for ; Mon, 15 Mar 2021 19:13:55 -0700 (PDT) Received: by mail-wm1-x335.google.com with SMTP id u5-20020a7bcb050000b029010e9316b9d5so554852wmj.2 for ; Mon, 15 Mar 2021 19:13:55 -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=XYMsH1f9RTk8cYGdkePdzOhe8idg5Uv3MYzNgv8XgRc=; b=pkh1gr0sYDtHan9R+sF9JzxGyjhkPXp69fN8/roUMJqrXB1L2QCfFUMs91MKyEJCcZ eM5uHElToir91Wz0lx5a4XLpwnkWJSoCMtsX9iPJ4usej8TnwGLjWTHo/3Ls/IansZYI dn553LKlEPCtH1Z6hXj/kvlwrRn9B1MW2paF9ShIO4VnXCOEwTbmdYSkdNLAGMDMBW7g ROfpormOi2MkEFs9bgx8Dbx+nNcn5Wa87MAvGtQStqvkxhSGnX+wwe/tNFSLHUXpyRN2 8MCyrnpJMG0V5CllaJHz20Mdf1BU3VCnJzEKWxaZaPeXOsxozsqPJ9NNRIX9itb4lQNS sJ6w== 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=XYMsH1f9RTk8cYGdkePdzOhe8idg5Uv3MYzNgv8XgRc=; b=Dq2c9PZO8OU4FgbJLP/0v0xbKvzj5XT1KZVF9Wc8elk73bPsOX/nPoB9WFqVfu9Rz8 K5hFEOoSb0Zb+RSl5xi/PDkUmXcw3RzmCjYtobRL7rSqjPiJSkNHYhk6woFJx6BFGF16 HMv1Cxqm6frdH/nm2E0dpc9fiaoISsWP2CVshjKVatS12l56YqZJz+COjWtbEHkButzd PPdIPqMCUD+YO2vPThf/zW2AP8XVFjXb10nmwurllw6T0Mtc41QA9NL3pZYdID8Vm5Cn nnbSX4uaCeQGKqY+CR/OMHJ8wHSOM+1W0wbFWQQjP/b/S261AabUN7+oFxte1azrUGyM 4r4w== X-Gm-Message-State: AOAM530rRoCoL74IdWfNc7C1RYb0k27XM2RfR65MityUc9xPUHMsBjGj Adnvd/VxGvhlCfiIczWJ20cJCrBDu2LyKA== X-Google-Smtp-Source: ABdhPJw6NswrN8f/JYDh80zYunSyw8392TwsOYHAINcwQ62cbqePU85Ej9h37ZScq2pICtGHG3OkXw== X-Received: by 2002:a05:600c:1550:: with SMTP id f16mr2211325wmg.97.1615860833773; Mon, 15 Mar 2021 19:13:53 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:53 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 26/29] tree-walk.h API: add get_tree_entry_all() Date: Tue, 16 Mar 2021 03:13:09 +0100 Message-Id: <20210316021312.13927-27-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a get_tree_entry_all() function and use it in the one caller who cares about both the mode and the object type. Refactor it accordingly to make it clear which parts care about the mode, and which about the object_type. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/update-index.c | 6 ++++-- tree-walk.c | 9 +-------- tree-walk.h | 4 ++++ 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/builtin/update-index.c b/builtin/update-index.c index 070510d6a88..b489a876392 100644 --- a/builtin/update-index.c +++ b/builtin/update-index.c @@ -599,16 +599,18 @@ static struct cache_entry *read_one_ent(const char *which, struct object_id *ent, const char *path, int namelen, int stage) { + enum object_type object_type; unsigned short mode; struct object_id oid; struct cache_entry *ce; - if (get_tree_entry_mode(the_repository, ent, path, &oid, &mode)) { + if (get_tree_entry_all(the_repository, ent, path, &oid, + &mode, &object_type)) { if (which) error("%s: not in %s branch.", path, which); return NULL; } - if (mode == S_IFDIR) { + if (object_type == OBJ_TREE) { if (which) error("%s: not a blob in %s branch.", path, which); return NULL; diff --git a/tree-walk.c b/tree-walk.c index f4473276c9f..a90dbf87af4 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -559,13 +559,6 @@ struct dir_state { struct object_id oid; }; -static int get_tree_entry_all(struct repository *r, - const struct object_id *tree_oid, - const char *name, - struct object_id *oid, - unsigned short *mode, - enum object_type *object_type); - static int find_tree_entry(struct repository *r, struct tree_desc *t, const char *name, struct object_id *result, unsigned short *mode, @@ -605,7 +598,7 @@ static int find_tree_entry(struct repository *r, struct tree_desc *t, return -1; } -static int get_tree_entry_all(struct repository *r, +int get_tree_entry_all(struct repository *r, const struct object_id *tree_oid, const char *name, struct object_id *oid, diff --git a/tree-walk.h b/tree-walk.h index a4c54871747..55ef88ef2e5 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -195,6 +195,7 @@ struct traverse_info { * * get_tree_entry_mode(): unsigned int mode * get_tree_entry_type(): enum object_type + * get_tree_entry_all(): unsigned int mode, enum object_type */ int get_tree_entry_mode(struct repository *, const struct object_id *, const char *, struct object_id *, @@ -202,6 +203,9 @@ int get_tree_entry_mode(struct repository *, const struct object_id *, const cha int get_tree_entry_type(struct repository *, const struct object_id *, const char *, struct object_id *, enum object_type *); +int get_tree_entry_all(struct repository *, const struct object_id *, const char *, + struct object_id *, + unsigned short *, enum object_type *); /** * Generate the full pathname of a tree entry based from the root of the From patchwork Tue Mar 16 02:13:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141055 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.8 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 35946C4360C for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 247BB65032 for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234602AbhCPCOb (ORCPT ); Mon, 15 Mar 2021 22:14:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34232 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234521AbhCPCN4 (ORCPT ); Mon, 15 Mar 2021 22:13:56 -0400 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 341B1C06174A for ; Mon, 15 Mar 2021 19:13:56 -0700 (PDT) Received: by mail-wm1-x32d.google.com with SMTP id g20so9230868wmk.3 for ; Mon, 15 Mar 2021 19:13:56 -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=ryoV5IbSkKJau7LUOtTZnxmmT3fEioGNnFuVrerEymA=; b=XrtDm6I2QWn7vq1729DZGqQ9t++fQauhytiyJijlircUegRbGlULSIcdMuUsDWutro 6stPZ3rqM+V75z6TH9cL9HEebN2Fm5RatA0dmjm/vBRIKevnhCZuHS+RGvnLvw9T6LM6 nft6yQZHwhNpS74wJqJBb17no167RXTfptsTcBXpCxuZu45i25A4HWngE8Nhug/FZmgE 0hVg4kgca/OO8TeCFFt9F5sYfXjCNv7NwBQKjya3runf1tIyygN8QcRu7fobwS1qkaML NJm8aT22uyifda3jIC2w4YRBzEI6hNtEQaxFsRGqsjNebRczPWNQfKBcTi4DMsqRn6Zv FGwA== 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=ryoV5IbSkKJau7LUOtTZnxmmT3fEioGNnFuVrerEymA=; b=RgvpZC5U9DaT2XiL7PxujHYASeUrkgZhgXUten89bJ7Y1AYf417qrqMVqWw9lZqKVS Fr3lS/Ni8gLi39zipjCoU/R5rlLgethu71P9OJiBgL0Hb7bLvHm3gXS8RTr6KXH8PBRA 5iU4RCKyBlYst1KOSfspi12l1nAxhc1Qf6o8105O5S7b/UFp7DeCWHOd3T8jgbJQ2zu0 eVGTsyStriO5m+KL9Mix8IPxAsjz1xdgxT+pS+/4qzhpf0dvVi2Z1tC713VPmpGMIFZS 0RDCASh/FAuyBPyUCMAOuf2FkfvYmDuwiAuoYsKxA8dcnualVstEozBYEZRHd2/4fOgR Vcpw== X-Gm-Message-State: AOAM530gaF5nSvD/rdkzHByod8ROMnl9W7rOVlXP564N71Qrwym51LHo 1OAyrumBPn9zxaHn3/IWfwO5DqK9UQhAeQ== X-Google-Smtp-Source: ABdhPJw0UHvNa6MOMNqUfvWUn3xYe3d7N9icB/tHpR7E9+aCuz3pqpFFYKCEc57iDXwjmEDru54F0w== X-Received: by 2002:a05:600c:35c1:: with SMTP id r1mr2264700wmq.60.1615860834623; Mon, 15 Mar 2021 19:13:54 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:54 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 27/29] tree-walk.h API: add a get_tree_entry_path() function Date: Tue, 16 Mar 2021 03:13:10 +0100 Message-Id: <20210316021312.13927-28-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a get_tree_entry_path() variant in addition to get_tree_entry_path_{mode,type,all}(). This is for those callers that need neither the mode nor "enum object_type" parameters filled for them. There's callers here which doesn't need the "struct object_id" filled either, and provides a throwaway variable for us. See the following commits for the introduction of such code that's being modified here: - shift_tree(): 68faf68938e (A new merge stragety 'subtree'., 2007-02-15) for the shift_tree() - tree_has_path(): 96e7ffbdc31 (merge-recursive: check for directory level conflicts, 2018-04-19) - init_notes(): fd53c9eb445 (Speed up git notes lookup, 2009-10-09) - diagnose_invalid_oid_path(): 009fee4774d (Detailed diagnosis when parsing an object name fails., 2009-12-07) Those could potentially be refactored too, but I've got to stop at some point, and right now I'm focusing downstream code that depends on "mode" (or "enum object_type"). Signed-off-by: Ævar Arnfjörð Bjarmason --- match-trees.c | 4 +--- merge-recursive.c | 6 ++---- notes.c | 3 +-- object-name.c | 3 +-- tree-walk.c | 11 +++++++++++ tree-walk.h | 3 +++ 6 files changed, 19 insertions(+), 11 deletions(-) diff --git a/match-trees.c b/match-trees.c index 2afa4968109..25bfb46fb02 100644 --- a/match-trees.c +++ b/match-trees.c @@ -288,12 +288,10 @@ void shift_tree(struct repository *r, if (add_score < del_score) { /* We need to pick a subtree of two */ - unsigned short mode; - if (!*del_prefix) return; - if (get_tree_entry_mode(r, hash2, del_prefix, shifted, &mode)) + if (get_tree_entry_path(r, hash2, del_prefix, shifted)) die("cannot find path %s in tree %s", del_prefix, oid_to_hex(hash2)); return; diff --git a/merge-recursive.c b/merge-recursive.c index bbbb68e15bc..83d2b8b8440 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -1884,11 +1884,9 @@ static int tree_has_path(struct repository *r, struct tree *tree, const char *path) { struct object_id hashy; - unsigned short mode_o; - - return !get_tree_entry_mode(r, + return !get_tree_entry_path(r, &tree->object.oid, path, - &hashy, &mode_o); + &hashy); } /* diff --git a/notes.c b/notes.c index ef138606146..aa46cb2b09e 100644 --- a/notes.c +++ b/notes.c @@ -994,7 +994,6 @@ void init_notes(struct notes_tree *t, const char *notes_ref, combine_notes_fn combine_notes, int flags) { struct object_id oid, object_oid; - unsigned short mode; struct leaf_node root_tree; if (!t) @@ -1021,7 +1020,7 @@ void init_notes(struct notes_tree *t, const char *notes_ref, return; if (flags & NOTES_INIT_WRITABLE && read_ref(notes_ref, &object_oid)) die("Cannot use notes ref %s", notes_ref); - if (get_tree_entry_mode(the_repository, &object_oid, "", &oid, &mode)) + if (get_tree_entry_path(the_repository, &object_oid, "", &oid)) die("Failed to read notes tree referenced by %s (%s)", notes_ref, oid_to_hex(&object_oid)); diff --git a/object-name.c b/object-name.c index 7e3b2d6d739..9ff5f83c1ff 100644 --- a/object-name.c +++ b/object-name.c @@ -1693,7 +1693,6 @@ static void diagnose_invalid_oid_path(struct repository *r, int object_name_len) { struct object_id oid; - unsigned short mode; if (!prefix) prefix = ""; @@ -1704,7 +1703,7 @@ static void diagnose_invalid_oid_path(struct repository *r, if (is_missing_file_error(errno)) { char *fullname = xstrfmt("%s%s", prefix, filename); - if (!get_tree_entry_mode(r, tree_oid, fullname, &oid, &mode)) { + if (!get_tree_entry_path(r, tree_oid, fullname, &oid)) { die(_("path '%s' exists, but not '%s'\n" "hint: Did you mean '%.*s:%s' aka '%.*s:./%s'?"), fullname, diff --git a/tree-walk.c b/tree-walk.c index a90dbf87af4..fa846535dfb 100644 --- a/tree-walk.c +++ b/tree-walk.c @@ -632,6 +632,17 @@ int get_tree_entry_all(struct repository *r, return retval; } +int get_tree_entry_path(struct repository *r, + const struct object_id *tree_oid, + const char *name, + struct object_id *oid) +{ + unsigned short mode; + enum object_type object_type; + return get_tree_entry_all(r, tree_oid, name, oid, + &mode, &object_type); +} + int get_tree_entry_mode(struct repository *r, const struct object_id *tree_oid, const char *name, diff --git a/tree-walk.h b/tree-walk.h index 55ef88ef2e5..efcd7ccd10e 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -193,10 +193,13 @@ struct traverse_info { * "struct name_entry" you'd like. You always need a pointer to an * appropriate variable to fill in (NULL won't do!): * + * get_tree_entry_path(): * get_tree_entry_mode(): unsigned int mode * get_tree_entry_type(): enum object_type * get_tree_entry_all(): unsigned int mode, enum object_type */ +int get_tree_entry_path(struct repository *, const struct object_id *, const char *, + struct object_id *); int get_tree_entry_mode(struct repository *, const struct object_id *, const char *, struct object_id *, unsigned short *); From patchwork Tue Mar 16 02:13:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141057 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 67CFAC43619 for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 546ED6502D for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234622AbhCPCOd (ORCPT ); Mon, 15 Mar 2021 22:14:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234527AbhCPCOJ (ORCPT ); Mon, 15 Mar 2021 22:14:09 -0400 Received: from mail-wr1-x436.google.com (mail-wr1-x436.google.com [IPv6:2a00:1450:4864:20::436]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0FDD7C06174A for ; Mon, 15 Mar 2021 19:13:57 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id v4so6653390wrp.13 for ; Mon, 15 Mar 2021 19:13:56 -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=hGSBrufPIdTQhV4ed4Ysv4+ZD/klDo4S572DiBCs+Bw=; b=Yr11lLzPVxczGt/MkyF7gPiTuESmw220Ars1qFLMB3yEo6jroLqlU89NhfWjSje3dI YQE7l8o/ZWqVYzKdK1Pyaf1Q3cm5xtOPyHWriCFK9k5fRvWkJqAXv+dRmUDwKq3AEWMX k+1ka2ufJ68Cex+MPMLcBUWAa7DCwjaB1u+FywCJ3pKa/piUxA0xwT1IFDlwnRTcOfQF At4i6shfNfVQZFecpdlluE0yLvmW0gZvtD2vY3TTCD1zYqe57IchmKgKSdBMz/pQW774 KtS11chy/LAcBxpy74pYcyusql8fwgJbffpsNwqNcNMHKPzfCUUHibTBbyrVQkKZcL/B iHDA== 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=hGSBrufPIdTQhV4ed4Ysv4+ZD/klDo4S572DiBCs+Bw=; b=gz84IfHaQ1Jv27vCoNQ5F1hiTceic0JvwlxkCG/98yrHW4Rek9j67zh5NiT9ohPo3a gwQhefqUExaO3Om1XqdPtbZ8a3LQY8CA7DBW/cHc3vbbg6xvUlClf/zz8FI0GeLNbkpZ iDuLnEeAUmJpLViOdnrOxzUqytgbCsijjbIV0ox3i5e/oGusABH2wj+KCOxmybirxk7i GMcU39TXOFqIwliJquE8GxV5oG2SXU0l2hcIdovB/lR/6Jyukt6COuIuOmAXq5/q3nJ0 EFR4UpKGh1BpqT20+QXqgC6D6ZO2IkzW6a1xxu5sauEjJMhiEFRXH2SnGW+ZppjRxYBw 21hw== X-Gm-Message-State: AOAM531OcYMAn6WvFWuwRB3lawL+8/869Bpiwvh82LMZKbi4RVbw0tR5 TQ/z8FlqmJleJLWn6ZgCQDcYdu6jMf3mmg== X-Google-Smtp-Source: ABdhPJwnbMj8SRN49o/68WBfppG/yvD7nUFpsoap7BQ6jkb7MWNSXcPhGlemugQyfTnaqWcKKSyZOA== X-Received: by 2002:a5d:4c85:: with SMTP id z5mr2234563wrs.208.1615860835611; Mon, 15 Mar 2021 19:13:55 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:54 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 28/29] blame: emit a better error on 'git blame directory' Date: Tue, 16 Mar 2021 03:13:11 +0100 Message-Id: <20210316021312.13927-29-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Change an early check for non-blobs in verify_working_tree_path() to let any such objects pass, and instead die shortly thereafter in the fake_working_tree_commit() caller's type check. Now e.g. doing "git blame t" in git.git emits: fatal: unsupported file type t Instead of: fatal: no such path 't' in HEAD Signed-off-by: Ævar Arnfjörð Bjarmason --- blame.c | 8 ++------ t/t8004-blame-with-conflicts.sh | 20 ++++++++++++++++++++ 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/blame.c b/blame.c index 9e0543e13d4..7da162cd582 100644 --- a/blame.c +++ b/blame.c @@ -100,12 +100,8 @@ static void verify_working_tree_path(struct repository *r, for (parents = work_tree->parents; parents; parents = parents->next) { const struct object_id *commit_oid = &parents->item->object.oid; - struct object_id blob_oid; - unsigned short mode; - int ret = get_tree_entry_mode(r, commit_oid, path, &blob_oid, - &mode); - - if (!ret && oid_object_info(r, &blob_oid, NULL) == OBJ_BLOB) + struct object_id oid; + if (!get_tree_entry_path(r, commit_oid, path, &oid)) return; } diff --git a/t/t8004-blame-with-conflicts.sh b/t/t8004-blame-with-conflicts.sh index 35414a53363..6caa504a0ea 100755 --- a/t/t8004-blame-with-conflicts.sh +++ b/t/t8004-blame-with-conflicts.sh @@ -73,4 +73,24 @@ test_expect_success 'blame does not crash with conflicted file in stages 1,3' ' git blame file1 ' +test_expect_success 'setup second case' ' + git merge --abort +' + +test_expect_success 'blame on directory/file conflict' ' + mkdir d && + test_commit second && + test_commit d/file && + test_must_fail git blame d 2>expected && + + git reset --hard second && + >d && + git add d && + git commit -m"a not-a-dir" && + test_must_fail git merge d/file && + + test_must_fail git blame d 2>actual && + test_cmp expected actual +' + test_done From patchwork Tue Mar 16 02:13:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= X-Patchwork-Id: 12141059 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.8 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 58C2AC4361A for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 460AC6502F for ; Tue, 16 Mar 2021 02:14:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234607AbhCPCOb (ORCPT ); Mon, 15 Mar 2021 22:14:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34290 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234522AbhCPCN6 (ORCPT ); Mon, 15 Mar 2021 22:13:58 -0400 Received: from mail-wr1-x42f.google.com (mail-wr1-x42f.google.com [IPv6:2a00:1450:4864:20::42f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C86B8C061756 for ; Mon, 15 Mar 2021 19:13:57 -0700 (PDT) Received: by mail-wr1-x42f.google.com with SMTP id e10so9657050wro.12 for ; Mon, 15 Mar 2021 19:13:57 -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=VvxRipLNGe2fsErHj83cDgVVJw2Y5Oy0thgH8t7TVoc=; b=dKjWdeEtwCNdET1kJqQIV/b+l1Bnj5nGZT6WHM00Rg8aGLCGRpJDHfJj1RJWuYJlb3 xDVE/E88oHD23Bbd/1Fi438BZLju21Pb287uMZItf7er+dDDzuavT0Zod0P1yY0qBblF KOQQC4JB9YGVmBzcbbLW3nRHcB86CIA26EhIkGD2Ct/LcM9cvNqACi1lQGsiQ5uvxlty BKCRq7yxHD0cfpo+z5CyMsMDup/T+oHrBZLtoaLbsntiKF+M/R1gdmhG7X/ZYkoAPZJ5 /1YxbLzsedbdjfIJBMHxD37hsVKXkkn4SEWEulzxTzgNVtlBjYF126PiFhMktct+d3Fg 59TQ== 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=VvxRipLNGe2fsErHj83cDgVVJw2Y5Oy0thgH8t7TVoc=; b=QU2yVJ1ZsaAK2HdyjbZPoF4yIyRrplQ0OMCgYV6l1+BGdrasgX9zJOC6fT9sviH0q/ SQ1tQz4qPRMV9NaqwafhQh8MrsHfbCGNcJH/Xp7LmwDbN2uyO1hGwVl1+B0sKvhWC17g hS7EZiA8v+kcNdR6yvVUkDMAdYKZiTIs+3uamPeq8dm709hLVu8FernzC1QU05371lCc DsxrdUzxJDZ8Qk4bJAWkpqFAeTLoAPQrfZoI8ztV4ZBbMLZUYvKwECtn2ORX7uz+D1Wh 9bLjsm2gZMR77vysXHcOpL/TpAd2RtpdX8bkh1UqblY3GDQlhWCdHEYuIbN6KWySE+TN US2A== X-Gm-Message-State: AOAM530qtsuradBwStYvVp3ibsfQEXQWsrArdXu6OlMFrdMyd7KFb+l4 O3dKEtU3vUeQPqbXa7v9GAqSzssHMr5pSg== X-Google-Smtp-Source: ABdhPJzxgmWFTw8WPD/zSNAQwu1hi7Yrd+EVlvBNAUTFxRyjADrxLPK0Bhl72U9eBpetIrVIsP4paQ== X-Received: by 2002:adf:f144:: with SMTP id y4mr2308920wro.408.1615860836329; Mon, 15 Mar 2021 19:13:56 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id i8sm21092494wrx.43.2021.03.15.19.13.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Mar 2021 19:13:55 -0700 (PDT) From: =?utf-8?b?w4Z2YXIgQXJuZmrDtnLDsCBCamFybWFzb24=?= To: git@vger.kernel.org Cc: Junio C Hamano , Elijah Newren , Kirill Smelkov , =?utf-8?b?Tmd1eeG7hW4gVGjDoWkgTmc=?= =?utf-8?b?4buNYyBEdXk=?= , =?utf-8?b?w4Z2YXIgQXJuZmo=?= =?utf-8?b?w7Zyw7AgQmphcm1hc29u?= Subject: [PATCH v2 29/29] tree-walk.h API: add a tree_entry_extract_type() function Date: Tue, 16 Mar 2021 03:13:12 +0100 Message-Id: <20210316021312.13927-30-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.rc2.211.g1d0b8788b3 In-Reply-To: <20210308150650.18626-1-avarab@gmail.com> References: <20210308150650.18626-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add and use a tree_entry_extract_type() function. There were callers of tree_entry_extract() which didn't care about the mode, but just the type in the tree entry. In emit_path() the "mode" variable was not used after the "isdir" assignment, as can be seen in the diff with it being set to 0. Signed-off-by: Ævar Arnfjörð Bjarmason --- match-trees.c | 12 ++++++------ tree-diff.c | 5 +++-- tree-walk.h | 11 +++++++++++ 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/match-trees.c b/match-trees.c index 25bfb46fb02..89109659aa3 100644 --- a/match-trees.c +++ b/match-trees.c @@ -143,11 +143,11 @@ static void match_trees(const struct object_id *hash1, while (one.size) { const char *path; const struct object_id *elem; - unsigned short mode; + enum object_type object_type; int score; - elem = tree_entry_extract_mode(&one, &path, &mode); - if (!S_ISDIR(mode)) + elem = tree_entry_extract_type(&one, &path, &object_type); + if (object_type != OBJ_TREE) goto next; score = score_trees(elem, hash2); if (*best_score < score) { @@ -198,14 +198,14 @@ static int splice_tree(const struct object_id *oid1, const char *prefix, rewrite_here = NULL; while (desc.size) { + enum object_type object_type; const char *name; - unsigned short mode; int len = tree_entry_len(&desc.entry); - tree_entry_extract_mode(&desc, &name, &mode); + tree_entry_extract_type(&desc, &name, &object_type); if (len == toplen && !memcmp(name, prefix, toplen)) { - if (!S_ISDIR(mode)) + if (object_type != OBJ_TREE) die("entry %s in tree %s is not a tree", name, oid_to_hex(oid1)); diff --git a/tree-diff.c b/tree-diff.c index 918ad95fa61..8409374f0ba 100644 --- a/tree-diff.c +++ b/tree-diff.c @@ -208,10 +208,11 @@ static struct combine_diff_path *emit_path(struct combine_diff_path *p, * 1) all modes for tp[i]=tp[imin] should be the same wrt * S_ISDIR, thanks to base_name_compare(). */ - tree_entry_extract_mode(&tp[imin], &path, &mode); + enum object_type object_type; + tree_entry_extract_type(&tp[imin], &path, &object_type); pathlen = tree_entry_len(&tp[imin].entry); - isdir = S_ISDIR(mode); + isdir = object_type == OBJ_TREE; oid = NULL; mode = 0; } diff --git a/tree-walk.h b/tree-walk.h index efcd7ccd10e..f5102ed5427 100644 --- a/tree-walk.h +++ b/tree-walk.h @@ -47,6 +47,7 @@ struct tree_desc { * appropriate variable to fill in (NULL won't do!): * * tree_entry_extract_mode(): const char *path, unsigned int mode + * tree_entry_extract_type(): const char *path, enum object_type * tree_entry_extract_all(): const char *path, unsigned int mode, enum object_type */ static inline const struct object_id *tree_entry_extract_mode(struct tree_desc *desc, @@ -58,6 +59,16 @@ static inline const struct object_id *tree_entry_extract_mode(struct tree_desc * return &desc->entry.oid; } +static inline const struct object_id *tree_entry_extract_type(struct tree_desc *desc, + const char **pathp, + enum object_type *object_typep) +{ + *pathp = desc->entry.path; + *object_typep = desc->entry.object_type; + return &desc->entry.oid; +} + + static inline const struct object_id *tree_entry_extract_all(struct tree_desc *desc, const char **pathp, unsigned short *modep,