From patchwork Tue Mar 16 15:57: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: 12142657 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 60957C433DB for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3A5E164F5D for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238243AbhCPP7I (ORCPT ); Tue, 16 Mar 2021 11:59:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236842AbhCPP6k (ORCPT ); Tue, 16 Mar 2021 11:58:40 -0400 Received: from mail-wr1-x430.google.com (mail-wr1-x430.google.com [IPv6:2a00:1450:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C7DE7C061756 for ; Tue, 16 Mar 2021 08:58:39 -0700 (PDT) Received: by mail-wr1-x430.google.com with SMTP id y16so10762701wrw.3 for ; Tue, 16 Mar 2021 08:58: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=hxfSwPNZZlmwjEMQTuH1bp0rCXGfVnB6FcqBOYXqDjE=; b=UG2ZIlyGPwiY01yf/HrRFmgvx3cR3rwd6N2psSDGiYJ5sanSE68Agbi0B6fbddnhId pQV43lUE1641Jj4aQB58OlqyKyLPumtsKwES9d5x3/vMdNSDP4vpWifPnrZRDdLZklne IQOlYmjLC2gH/Fyk+K1L2C4YssxwyXTgjMOgbHMZSD8EbRiEzoTDRwNDGC/pEGuypPR0 ieWDaHhQLTiWstF+Q+kN2fvf6GRWNWE9WCU2edOEih7+dDFEeVTkkbv3mbodBJzwoR9O mlwmEH9ZThKAnlJ/meMEo3BWp87+EJGTF7EAnzmKWxCkcdBnUsDmmtVOubXupxhPp2RP opGw== 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=hxfSwPNZZlmwjEMQTuH1bp0rCXGfVnB6FcqBOYXqDjE=; b=BF1rkVZ9ratUuvfdLRfuLQjNrAZBdL0t0wFrakVlCbN5ypH/wORvD08pTY5oWyEBA0 Nwo2nZ9qgZS4HdblVG3bRwvWVTHHeODaVs8tHdBmZ7cJHDR4OcRJZrJVT4dRDimWx4su xGVWrpe+9y+tEKBhRcHi59Gkos0MXCvwSxw1uXGynRrh/waEcYI95vROk86CIHLKFrkD YWR5m1bDkbFIzRT1Vepq5tpntNc6jO+L6Ka2HT8lQwIH+FRTXz10ROxuSZDk9pYiB+lH cLHUCJHxt34d1L/6cdpsdX4U70mFBMsDWWlpYs8j8jzAemCickbJoWuzH1O+znaEkSQI 2w7Q== X-Gm-Message-State: AOAM532ubP2qpcYTwJs6oUR2A2rQhRhs7v8Au4x9QYT9HuV4Us13QA9N tD17wF08hediSY5EVM76gMsrrnm9cf/CoA== X-Google-Smtp-Source: ABdhPJzJvDC7wVBswMNMXfYyJjBrHhtm8j/tadScFdO0hdy7pr94Q32nJhzCF+ro9/bi6adgnL7gsg== X-Received: by 2002:adf:a3d3:: with SMTP id m19mr5752533wrb.24.1615910318319; Tue, 16 Mar 2021 08:58:38 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 01/32] diff.c: remove redundant canon_mode() call Date: Tue, 16 Mar 2021 16:57:58 +0100 Message-Id: <20210316155829.31242-2-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 6956f5e335..bf46e6a4d8 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 15:57: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: 12142659 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 A765FC43381 for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8249D64FE6 for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238275AbhCPP7M (ORCPT ); Tue, 16 Mar 2021 11:59:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42532 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236865AbhCPP6l (ORCPT ); Tue, 16 Mar 2021 11:58:41 -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 C4A31C06175F for ; Tue, 16 Mar 2021 08:58:40 -0700 (PDT) Received: by mail-wr1-x432.google.com with SMTP id o16so7701373wrn.0 for ; Tue, 16 Mar 2021 08:58: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=MdeNALThxh+UgsUi+SbhDygj/MqiDi9xam9o7FK3Y1U=; b=uVI3nl+vwLXhlKoD4ZmRMZDravl10UyQCevnVwhMe9O1FqrAmP1kukpYTDKu8/5brO ed3pFdG+1iJJRm7lzSigzI5tIYp8CV3mB+VQQIsLJY/Ton/O8ErEv1yMtWq4m1ehp2QG qYWdK4fvGdFCO3rJQU+wUC2gJq9GdMXUPndh6wRv9eTbCY9W4uQY386KR4Jk6CnPGxBn sPUkG3U4E5UsAjeulcGa+wc98eTtAUAy7XjgJeo2+YPb8SBrV9K5H0ZBcgC8vEatW1pv ZpGwJ0FnByFzrg6EWIi22+U0ast+Q+SKVeGsmuoFRTRAkd9TqcZurWAc+zXSM+cFvIzQ kQ+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=MdeNALThxh+UgsUi+SbhDygj/MqiDi9xam9o7FK3Y1U=; b=VuZQAeRofLPzKlueHW5XkWpQ5Q0HT514J4rVSAfU9pm4WzLazPJQDBUxHgyNrxkJyL yZE2z9L1mkoKDVH5bgEsa9qcIFW0kqq9OIWz0uOIxAxvCB3IXabN9WbmzpYKgXe9Zhlo cbqNFE52Y06KILbeNpkeGeLY1VdRZZ6qoH7BhydFKw2Zep+k0Scx6SAxy9lH1BRXeel1 BwkIKJOdZ9n8gRHJxOpJlmN+pTMxfLHGZtw4oLzswPCRjgQigAvXzlgR/SR1b5wyHScj aUuvySRwsNL4gn/5H1KFEi/FDndjqIGOUouHIWnWd37ufoAhikIixVr6VrE3k/3Zn824 J36w== X-Gm-Message-State: AOAM533XBo+7B74rGw1iPBzd0Tn8ACr7ibHBhQYDeopM+VwDqeJ9UaIV IJ2h9prtUhiY3gtx/OfTQ7Rw0IzHdoKfhA== X-Google-Smtp-Source: ABdhPJwyHwEDtHC6dN2nRMJb1WFgNfJTGbWLCLDmxxY6rveKOWt0JPiwihop1ospkdAEWqUrucBWGA== X-Received: by 2002:adf:f44b:: with SMTP id f11mr5737099wrp.345.1615910319128; Tue, 16 Mar 2021 08:58:39 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 02/32] notes & match-trees: use name_entry's "pathlen" member Date: Tue, 16 Mar 2021 16:57:59 +0100 Message-Id: <20210316155829.31242-3-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 f6c194c1cc..1011357ad0 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 d5ac081e76..0a5b4fa1db 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 15:58: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: 12142661 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 D00A6C4332B for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A2075650F8 for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238283AbhCPP7N (ORCPT ); Tue, 16 Mar 2021 11:59:13 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42540 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236853AbhCPP6m (ORCPT ); Tue, 16 Mar 2021 11:58:42 -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 A6DB0C061762 for ; Tue, 16 Mar 2021 08:58:41 -0700 (PDT) Received: by mail-wr1-x436.google.com with SMTP id o16so7701409wrn.0 for ; Tue, 16 Mar 2021 08:58: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=PTKwzfpHpixOsZTgzJPo8ijwcC75UiHFYOs24mncvbc=; b=gIHV7/0ZfrhEivPfZRJ/ZTHT3TcYYD2nvHOfcIPDylFdU8IFjpbU5w5lwiLbKWXla8 6ITn9TexpGJNblU/5lmkilb6fxJdTOB/15mD1ll46675j6SimKmDAAHNcrJffXjn3emG LZ7ZW6ijUdNmowYp1dA7G4U4iHMvSJxDVO04pPkHWguhFUZVhvtPYxAVRsG9owmZstEG h3AtTepzN/58a6VcaSXyWvTve51JsvENEmPh8dbLOdR3x7i/Kyx4cYhUJp14tye4qFd/ h9I+i8LAU5VyUPF25zObh3Wn2mjcuesOG/Xmz+uGzNir1BDG1uWAZnWkGL+fyvoNZbmZ /omQ== 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=PTKwzfpHpixOsZTgzJPo8ijwcC75UiHFYOs24mncvbc=; b=ZuHHO4Eu1TDE/zxh1WSkCb+vqs4kzhTcU+/UHuT4X9ybzDPXG5bySBMJdXJ3GtNcll doPjnNZrWknSmymeQaRwxd7XKYGYyPJWjgvtOc7m00B3rN5uWyKixbO06UrpulPaGIks KxeaLaDF9ntegiGcXHTkPgKdCM5Q+B4kqRetDMupiK7SngYh+mNw9qHINpKKeRLDS3B6 ZRtVKPl2TY55t0Qo/iypwwDU4hJl+sBQKdVCpImrxoB6Vz3HoDBomDuWLTQB0a9DOYNY u1+2gos8n5zBRJYZLoSDR1EnfgACUQxtDNTDaelCcIsSDmdehE2esdeKz3MagRk9BaY2 rgnw== X-Gm-Message-State: AOAM531/fs1TLKfoJbr1qenitSPu6I5UHIRy8mAptbAKwuFnRuMYa4Zd q70G6uCC8YobcOt2EYsbbZJHsYiB4yOnWQ== X-Google-Smtp-Source: ABdhPJzLR0xa1T8J4+obworE2QBYYd9dZFXej6ElgSb08wiNzvmFDDDz3mWIu1oEBl8/BB3If0OGQg== X-Received: by 2002:a5d:4884:: with SMTP id g4mr5602315wrq.191.1615910320097; Tue, 16 Mar 2021 08:58:40 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 03/32] cache.h: add a comment to object_type() Date: Tue, 16 Mar 2021 16:58:00 +0100 Message-Id: <20210316155829.31242-4-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 c2f8a8eadf..ae0c0bef5c 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 15:58: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: 12142669 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 D725EC4332D for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B77C564F5D for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238287AbhCPP7P (ORCPT ); Tue, 16 Mar 2021 11:59:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42544 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232702AbhCPP6n (ORCPT ); Tue, 16 Mar 2021 11:58:43 -0400 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A2527C061763 for ; Tue, 16 Mar 2021 08:58:42 -0700 (PDT) Received: by mail-wr1-x42a.google.com with SMTP id o16so7701444wrn.0 for ; Tue, 16 Mar 2021 08:58: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=wuM+mu1FmtgxjEuKEr+f4w1LWONmtKD6SvuFG09b2VM=; b=q5ulKRkxVGqKy+epN38fsfCX8SQPP4uPlEMR/coBHEWRlESV2pBNqPgGnVQw7t57W9 tjnBVFxpd16VB3NuidIiEbZhBNe6qBrOAWWiA1tqTr0i2YdCXPHeqsMTGg6iTG0DCF5X tn9CW0wbVtQNaUAR8jYzTNzvREVJn9pWPsvkvvEA46TsYBlinUQRMNatFT+kYeOhYQ9d PnNKu9SYVrCC4Bx5DWEl1khvv1ZzRe6TnvMtILC0V3LRkpk6+AZ45PVcVygzBX+NCyFA x3b/qjiYXwXo7STEzMVPFsQRu+0gqTkm4n5DhNE6YcuUqq7t2YlLVMjs1VS59jhYigyc 6ZRg== 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=wuM+mu1FmtgxjEuKEr+f4w1LWONmtKD6SvuFG09b2VM=; b=Sjvw5CroUrgasTZbJFGae8GnF/BtB8prIXgl4dDNIlWHj2jlS0LCZQJCwD58hgtL11 mfAISeX36hNpvzYtN5rVvlHEl8epFNj7v+/4WKvz4+/qc8Bo2J4JEeAfZA4FbEwkKiRL MWLCYo0z7CBp3/V9EJIT99QfZa1Aq+QDrddmGzzpHkYJUnpq06eivv9PVN1fjARBJ4c8 BLJ44gmUycwHzLv7kaWtCDeITaDfHDgJIBqqtl46jflCeIAd/ETu5IoqS1/aEx34EcLB WCdMrtxZcEajwcjKbNbnWCCb07Q0ELY4RRo79TgEi2tdrhD+dVPfITq8PbvX9d/yJcuC 5RAg== X-Gm-Message-State: AOAM532C7nDvkWkYNzoK6ZPMg92JwCgj6icKjvRgCQFn29AwubHtutad q1Jpw0tAHem+X1RMyhTy8SdSniTTfarKqQ== X-Google-Smtp-Source: ABdhPJwE4Mg83Y9IBerwJi/00MarcQ/phXq0qfWf0obgJviqowfzjNVYo6vTCtjZztN+I9cdo96a9w== X-Received: by 2002:a5d:4443:: with SMTP id x3mr5663069wrr.49.1615910321115; Tue, 16 Mar 2021 08:58:41 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 04/32] tree-walk.h: add object_type member to name_entry Date: Tue, 16 Mar 2021 16:58:01 +0100 Message-Id: <20210316155829.31242-5-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 2d6226d5f1..b210967b73 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 a5058469e9..9f3825d277 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 15:58: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: 12142665 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 E015EC433E9 for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CA87864FEA for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238295AbhCPP7S (ORCPT ); Tue, 16 Mar 2021 11:59:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238251AbhCPP6s (ORCPT ); Tue, 16 Mar 2021 11:58:48 -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 844ADC061764 for ; Tue, 16 Mar 2021 08:58:43 -0700 (PDT) Received: by mail-wr1-x431.google.com with SMTP id z2so7715977wrl.5 for ; Tue, 16 Mar 2021 08:58: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=IXpQ/jRkC/QcIAOV4xkIQE1CbIuI96mg9DpitnJLhTk=; b=OjYCXpWiS/zfLLmq1kM6QqwAAeraVs13DlB88LoujAU9FUd7EO7ZIhr1wc5yizmnbu EZoJC4rbR30s7Bz+viJyIBraUtd2Furwf8sL8lGY2HNLmrzapYREtZc1EEB1l9VxdqX/ CmnJD2lQCaanx517Yo1ZTbscP5Hj9HxapaHC+LcsHntykZCX96AS+//C8up/D/07XLEP m6Ku3fsUVyKuQRmjAxvCBY2k8gd4wpec6KBu+5COXHq+xNAE+ZT7JWX603unERd0yx7z WEnGMMMVAA/jzIDN5MmmvehLuop1tMxbP8hVDaaXv0lsxry+t7FdruGqpUlsQGkiL1hg QSHA== 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=IXpQ/jRkC/QcIAOV4xkIQE1CbIuI96mg9DpitnJLhTk=; b=L5rO29W66ywXk35rnTSoCKi8222X8AEPFfldjr4AqPPW/sradvu21GAqVG4qcltOah ydJ0+II26pMrVnL4Jym2pMG6txyRo+6gSoxuOkBmXsPmQNUpaMZkRgTyyB0/QdpWkjba yr3Pd+m9fBa6UpotO6dYmdzBvQD1hlhvByX73biT+aawNuxXM/SqhLcrEbP3FqBOv92X eukqtgnC7weKM2LxTVyaTG4QTHY47gGIIONLUhP8YDjOlMNF07LfTaVwngw0WVPEXYMR mFOZe4fxAkB7yQ8Ao2dVQ62xKJEUFnYvR9w/sekTCfTOIw5tVgqT64OHV20aWQKvXpEq 0Gtg== X-Gm-Message-State: AOAM530rR0DZ1Ppz/+2Miyok2nUZTgAQm7upJQkevgucXLgMd/Byk3cL LBg9RZtqzEMN7mmtXqd9X1tF4n5nqkQmGA== X-Google-Smtp-Source: ABdhPJwtCrdgh3gKWfnC0cHiN+LdUApdFSolQP9jJJ1y/UQk9e3Wg1wu5JQjWMVJ14Yycof5aSBW0Q== X-Received: by 2002:adf:f150:: with SMTP id y16mr5685295wro.414.1615910322005; Tue, 16 Mar 2021 08:58:42 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 05/32] tree-walk.c: migrate to using new "object_type" field when possible Date: Tue, 16 Mar 2021 16:58:02 +0100 Message-Id: <20210316155829.31242-6-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 b210967b73..6e9161901d 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 15:58: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: 12142679 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 05197C4332E for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id DBBD2650F8 for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238293AbhCPP7R (ORCPT ); Tue, 16 Mar 2021 11:59:17 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42568 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238252AbhCPP6s (ORCPT ); Tue, 16 Mar 2021 11:58:48 -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 51E6DC061765 for ; Tue, 16 Mar 2021 08:58:44 -0700 (PDT) Received: by mail-wr1-x433.google.com with SMTP id e10so10730250wro.12 for ; Tue, 16 Mar 2021 08:58: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=SJteMU6h8ULo+a1oO7hctp1MKm49zgDRKN+RbwKlzV0=; b=O8WXO4JWmHrVifgMB4+NKHeFAWbeQW6AFy0rcmjzfOZJu1AUIsEVBIQ5jH0v5erBiT QlEg8P6HZ5LxNxLdJl4M3kyu7hzA8bel9w1MtCErf9EN60TLhvHQsheUUZasZISpDrhy LqXg2TS+8TTRgbYQ7O1esRv4pkr0RjaSvptV22nkvqmezn7PsvkRgFay4LB+Na9e2iTz uoFNO1B44iRIhPAXkVfzh2YDSydTZ2e93b3GFWOu+TJz584bbgL8mPEphSNPCAvDBZN3 SxZmLpPIbBcvRP2bqNonOjMI1xR/8sPuGoiewLTCA+q8/jjhHnBX7BkMhKZMlMZ79UII Qxyg== 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=SJteMU6h8ULo+a1oO7hctp1MKm49zgDRKN+RbwKlzV0=; b=QFgApwlsZQW80Cm1STc6xceCMJE1lWPFArTcnrExG2V7EQZp5G5wuZGx/l3Yb44m+Q NDLFdQPCzVZ+qWt+yNPO5LspXBQEAa5n6o3XHNxRDRs2doKXWRprMybvKpllfVxiFBrl T1V1n98j25AjgN683C06qyPkv258raU37Mb3YH3bc79ASDNS8xoJcbJUKT2uDJMPvZVm eKMNdhK9bylq+APcMpoiKv9pKv0a/lLDWTqqvL/bo6v4xIWgeFgEPxaCEDcQPwFUhdU/ vk5BwN9PDd01SfXsx+LetJZQ3I5wwwAV2zSd90Jy5f3iFEwRjchAPkNeuXQFG3ElXDwW T+jw== X-Gm-Message-State: AOAM530i5XjJ53Q2pRgrbQYj4EKVbv2D68Xovv5NwJdRmY90ZyBNsqY4 PNqgu3mQsmHl1rfScONXDsBNyb9cnyduzg== X-Google-Smtp-Source: ABdhPJy8fo5RaMbWq9oW+ayJH2I6yzbOLfoBFUeFG19YTeuG92etfdpng63XtriLNDwtUNpumYLEXQ== X-Received: by 2002:adf:f841:: with SMTP id d1mr5567598wrq.36.1615910322783; Tue, 16 Mar 2021 08:58:42 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 06/32] fast-import tests: test for sorting dir/file foo v.s. foo.txt Date: Tue, 16 Mar 2021 16:58:03 +0100 Message-Id: <20210316155829.31242-7-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a missing test for the sorting of "foo" v.s. "foo.txt" where "foo" can be either a file or a directory. If it's a file then "foo" should sort before "foo.txt", and the other way around if "foo" is a directory. See [1] for a reply to a patch of mine introducing such a regression. We now finally have a test for this code added back in 463acbe1c6 (Added tree and commit writing to fast-import., 2006-08-14). This tests both the tecmp1() and tecmp0() functions introduced inn 4cabf8583f (Implemented tree delta compression in fast-import., 2006-08-28). This will catch cases where the "mode" is the same, or reversed between a & b in both functions. There was an existing test for the tecmp1() function(s) just above this one added here. That existing test was added in e741130386 (New fast-import test case for valid tree sorting, 2007-03-12) and would catch cases where entries were reversed, but not if their mode (or rather, type) was the the same or otherwise wrong value. There were no tests at all for the tecmp0() function. As with the tecmp1() test the new test will catch cases where the "mode" is the same (e.g. "1"), or if the two are reversed. It won't catch a "return 0" from the function (i.e. already sorted), that case requires tecmp1() to also be broken. 1. https://lore.kernel.org/git/CABPp-BEZfG_pNNTWsnxEa1xG+kgpQfpXj=KHBkCBAMikrXj-aA@mail.gmail.com/ Signed-off-by: Ævar Arnfjörð Bjarmason --- t/t9300-fast-import.sh | 87 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/t/t9300-fast-import.sh b/t/t9300-fast-import.sh index 5c47ac4465..8bafb8cc51 100755 --- a/t/t9300-fast-import.sh +++ b/t/t9300-fast-import.sh @@ -955,6 +955,93 @@ test_expect_success 'L: verify internal tree sorting' ' test_cmp expect actual ' +test_expect_success 'L: verify internal tree sorting on bad input (tecmp1)' ' + test_create_repo L1-0 && + + cat >input <<-INPUT_END && + blob + mark :1 + data 0 + + reset refs/heads/L1-0 + commit refs/heads/L1-0 + committer $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL> $GIT_COMMITTER_DATE + data <expected <<-EXPECT_END && + x.txt + x + z + z.txt + EXPECT_END + + git -C L1-0 fast-import tmp && + cut -f 2 actual && + test_cmp expected actual && + git -C L1-0 fsck 2>err && + # Would happen if tecmp1() were broken + ! grep "error in tree .*: treeNotSorted: " err +' + +test_expect_success 'L: verify internal tree sorting on bad input (tecmp0)' ' + + test_create_repo L1-1 && + + cat >input <<-INPUT_END && + blob + mark :1 + data < $GIT_COMMITTER_DATE + data < $GIT_COMMITTER_DATE + data <expected <<-EXPECT_END && + another.txt + x.txt + x + z + z.txt + EXPECT_END + + git -C L1-1 fast-import tmp 2>err && + # Would happen if tecmp0() passed a fixed mode + ! grep "fatal: not a tree object" err && + cut -f 2 actual && + test_cmp expected actual && + git -C L1-1 fsck +' + test_expect_success 'L: nested tree copy does not corrupt deltas' ' cat >input <<-INPUT_END && blob From patchwork Tue Mar 16 15:58: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: 12142667 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 277C0C43331 for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 109C364FEA for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238301AbhCPP7T (ORCPT ); Tue, 16 Mar 2021 11:59:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42576 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238254AbhCPP6u (ORCPT ); Tue, 16 Mar 2021 11:58:50 -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 46953C0613D7 for ; Tue, 16 Mar 2021 08:58:45 -0700 (PDT) Received: by mail-wr1-x42b.google.com with SMTP id e18so7705225wrt.6 for ; Tue, 16 Mar 2021 08:58: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=6zSKsCLQNz24hJmFrPJMkcXP/jg6YRPbN11deTsmjMc=; b=JmaioLxXYrv7vgtJ702yvWfAjWnQigiY+LVcxeeg5DzcKwLicjyhSYW/0F1c2yIyxo K+0M908Ih9cITRwMm+sHR0x43VRnkczNi2eYaWhcyLle7UaSf+DogSfbqukLe5hIyZxQ b8RoNDhoGEpo8N3hg6xBiN/97dpPo0B3wuTf2hQwqLmhDsRTxzIhacLZBFrF7yVfgwFe Olh02RibkIOTaOsDbqqdxulI1Gs19wykLvWpczl98uQOaD4bpg8Cqrwzs4veJKHnOwAs h3XchvIa9x+jzhToQp0R1LotDTSS+bq5cIN3AmxGGvrFcNTJxb12BeiKXqud9LBwgQct SvMQ== 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=6zSKsCLQNz24hJmFrPJMkcXP/jg6YRPbN11deTsmjMc=; b=KnArCr9pY5CpmcAN6gHlJ5VwlTrwXPTNs9jdNFaNZQO+X/jo+QqmlKkxPYg3I4VXFF YhiuRBA6cmfLoC3rEhhquas6LsOCUb0HUflzkxoVVQ49ivLdEtblFgPwuihSfTUUa1XY TjTC6iZAzozL46YQ/VIfbKukTZ46LtixHy86bkyQ2YsdQB5DX/Nk/EbiV0nHSud4E1x5 Tmgj5kvpXwHyn2tkf/lSYAt7Q/irOJWyokqGyh7ObQXnKXihYEhyBomFNILFTv+/+5KD /Y3Jxts6l6cPCKm4evdC/QYN7mSJeyQerAzBags/LyLXHtD2SfhzBnAeKGDCQ17XjPS6 8m9A== X-Gm-Message-State: AOAM532JM444le8aPfvEx3jnFu5EWDwfIrnpAdRGSw+wwowlLRfPIGDb RVgZhDJPj8cR4I/gvw+Srbqyf25rtGpebQ== X-Google-Smtp-Source: ABdhPJyJPK8g+gZTGQtLrIqtDn0QVzPSCJB5/D+g6wfP1D7ZM4VjcqmUB4mLZZGsMFoCG4qMabR9ag== X-Received: by 2002:a5d:4523:: with SMTP id j3mr5878075wra.288.1615910323706; Tue, 16 Mar 2021 08:58:43 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 07/32] mktree tests: test that "mode" is passed when sorting Date: Tue, 16 Mar 2021 16:58:04 +0100 Message-Id: <20210316155829.31242-8-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Add a test for the mode being passed to ent_compare(). That code dates back to 83f50539a9 (git-mktree: reverse of git-ls-tree., 2006-02-20) and there's never been a test for that particular edge case. Now we have one. I don't see how anything could run into this in practice. In order for that mode sorting to matter as a tiebreaker we need to have a duplicate entry in the tree, i.e. two "foo" entries, one a blob and one a tree. This asserts that if that happens we'll sort on the modes we encounter in such an invalid entry, i.e. we expect the tree entry before the blob. As shown here we'd need to disable the fsck.duplicateEntries error to get to the point of running "mktree", so I doubt anyone's pushing this sort of data around. Signed-off-by: Ævar Arnfjörð Bjarmason --- t/t1450-fsck.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh index 5071ac63a5..46125190b4 100755 --- a/t/t1450-fsck.sh +++ b/t/t1450-fsck.sh @@ -318,6 +318,50 @@ test_expect_success 'tree entry with type mismatch' ' test_i18ngrep ! "dangling blob" out ' +test_expect_success 'tree entry with duplicate type mismatching objects' ' + test_create_repo duplicate-entry && + ( + cd duplicate-entry && + blob="$(printf "foo" | git hash-object -w --stdin)" && + tree="$(printf "100644 blob $blob\tfoo" | git mktree)" && + commit="$(git commit-tree $tree -m "first commit")" && + git cat-file commit $commit >good-commit && + + # First bad commit, wrong type, but in the right order + printf "40000 A\0$(echo $tree | hex2oct)" >broken-tree-A && + printf "100644 A\0$(echo $blob | hex2oct)" >broken-tree-B && + cat broken-tree-A broken-tree-B >broken-tree.1 && + broken_tree1="$(git hash-object -w --literally -t tree broken-tree.1)" && + bad_commit1="$(git commit-tree $broken_tree1 -m "bad commit 1")" && + git cat-file commit $bad_commit1 >bad-commit.1 && + git update-ref refs/heads/broken-commit-1 $bad_commit1 && + + test_must_fail git fsck && + git -c fsck.duplicateEntries=warn fsck 2>err && + grep " in tree .*$broken_tree1: duplicateEntries" err && + + # Second bad commits, wrong types and order + cat broken-tree-B broken-tree-A >broken-tree.2 && + broken_tree2="$(git hash-object -w --literally -t tree broken-tree.2)" && + bad_commit2="$(git commit-tree $broken_tree2 -m "bad commit 2")" && + git cat-file commit $bad_commit2 >bad-commit.2 && + git update-ref refs/heads/broken-commit-2 $bad_commit2 && + + test_must_fail git fsck && + git -c fsck.duplicateEntries=warn fsck 2>err && + grep " in tree .*$broken_tree2: duplicateEntries" err && + + # git mktree should "fix" the order of this already broken data + git ls-tree broken-commit-1 >broken-tree-1-ls && + git ls-tree broken-commit-2 >broken-tree-2-ls && + ! test_cmp broken-tree-1-ls broken-tree-2-ls && + + git mktree broken-mktree-1 && + git mktree broken-mktree-2 && + test_cmp broken-mktree-1 broken-mktree-2 + ) +' + test_expect_success 'tag pointing to nonexistent' ' badoid=$(test_oid deadbeef) && cat >invalid-tag <<-EOF && From patchwork Tue Mar 16 15:58: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: 12142671 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 189F5C43332 for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id F3E3864F5D for ; Tue, 16 Mar 2021 15:59:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238298AbhCPP7S (ORCPT ); Tue, 16 Mar 2021 11:59:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42578 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238255AbhCPP6u (ORCPT ); Tue, 16 Mar 2021 11:58:50 -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 203CFC0613D8 for ; Tue, 16 Mar 2021 08:58:46 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id n11-20020a05600c4f8bb029010e5cf86347so4069001wmq.1 for ; Tue, 16 Mar 2021 08:58: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=k/4L8O9YmcWj5RHNeBTo+tK864N38EhgNEqW34pysjc=; b=BdFRr+/AAXJG6bG9RijhXeQmb1LpJcxUWzgcQBctZoFv0A/7L4n3HlToCMvbO2mamo Axte4oMo7KZ3YSRvL5WDYfdHtNcjUlcTkJGVDdUyiCgheFvGOdMmnvT1X0mW+GfGjA2c 9fO6FUzPp82fopwHrt3VocHAJUgkfhJBjy9ODUpvfaveVnsh2O3VWujHsoKEUloo9ckx kVrz8FZrldcYmmzlO8teMuroE9TEotEPMO5zh7zU3GpA2uxZgosOJDL4wW7u1MUa8opy a1ciQTxL4TvqXBQpeEgSDUl33NSy/tdEc9sqFoiO2R8bafU3OGkURpdmTogmkvHAf4KV YPcQ== 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=k/4L8O9YmcWj5RHNeBTo+tK864N38EhgNEqW34pysjc=; b=DJiUSepRgWtm5VksUjvMXmm1NwtDg2B6aTFhMNq+NnydTuAdSwYSo5/93AAcFmYETc FV4OvP2c42ns6m/4PuWRB6V7hzQnnQeGfa+Ixo13A/Fb5xO5k9GVC7//5sIhFcLh4mVL e1bfUuLyGTxiUYWzWRZiY3oLi9pfKzGBUBFk+j8j2BOoTGjWLBgIa7pIHhOkeMWWYkVK KY/iU1sHdhf89o8LxsPmtnV0/r+t/p0pLuoIS8oJiCO2AOakW8wX92GOSTu4Vi/uWl6R dI2Y4sRc+e52W2sEXKTfYpSyVGm92HVlD2cQDfyZArdokhnsIQ/4zfvEDXsM58wLYRJl Y07g== X-Gm-Message-State: AOAM532YXz5kVVMuFqH6homYHYBDHp/Xtt3SDJqhBR3NNAGxGLfbljR8 fCRxjD3q5mFDPirazto+WOSuJ48x7d2Xlg== X-Google-Smtp-Source: ABdhPJzxnQCPZQp5Vd7/FUnZUTT3VdcyaPnPp1yElzLn2iAGlB9B+Y5dMVbUEYMwkXGfnCpDN668Kg== X-Received: by 2002:a1c:6a12:: with SMTP id f18mr309076wmc.31.1615910324601; Tue, 16 Mar 2021 08:58:44 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 08/32] diff tests: test that "mode" is passed when sorting Date: Tue, 16 Mar 2021 16:58:05 +0100 Message-Id: <20210316155829.31242-9-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-1-avarab@gmail.com> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Piggy-back on the recently added fsck tests for mode comparisons in mktree and assert that diff-tree also does the right thing in this implausible scenario. As with the other tests I've added in preceding commits, these tests will fail if the mode is the same or reversed, respectively. The diff-tree code being tested here was originally added back in .9174026cfe (Add "diff-tree" program to show which files have changed between two trees., 2005-04-09). Unlike the other tests I've added there are existing tests for both of these scenarios. Breaking that function as described above will make tests in t4002-diff-basic.sh, t6409-merge-subtree.sh and t4037-diff-r-t-dirs.sh fail. I think it's good to have tests for this regardless, so let's add these. Signed-off-by: Ævar Arnfjörð Bjarmason --- t/t1450-fsck.sh | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh index 46125190b4..5dd842bb82 100755 --- a/t/t1450-fsck.sh +++ b/t/t1450-fsck.sh @@ -362,6 +362,28 @@ test_expect_success 'tree entry with duplicate type mismatching objects' ' ) ' +test_expect_success 'diff-tree stressing tree-diff.c::tree_entry_pathcmp(), not the same type' ' + zero=$(test_oid zero) && + git -C duplicate-entry diff-tree broken-commit-1 broken-commit-2 >1-to-2 && + grep "$zero" 1-to-2 >lines && + test_line_count = 2 lines && + + git -C duplicate-entry diff-tree broken-commit-2 broken-commit-1 >2-to-1 && + grep "$zero" 2-to-1 >lines && + test_line_count = 2 lines +' + +test_expect_success 'diff-tree stressing tree-diff.c::tree_entry_pathcmp(), types not reversed' ' + blob_ok=$(git -C duplicate-entry rev-parse broken-commit-2:A) && + git -C duplicate-entry diff-tree --diff-filter=A broken-commit-1 broken-commit-2 >1-to-2 && + grep "$blob_ok" 1-to-2 && + test_line_count = 1 1-to-2 && + + git -C duplicate-entry diff-tree --diff-filter=A broken-commit-2 broken-commit-1 >2-to-1 && + grep "$blob_ok" 2-to-1 && + test_line_count = 1 2-to-1 +' + test_expect_success 'tag pointing to nonexistent' ' badoid=$(test_oid deadbeef) && cat >invalid-tag <<-EOF && From patchwork Tue Mar 16 15:58: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: 12142677 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 882ADC432C3 for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 656F664FEA for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238247AbhCPP7V (ORCPT ); Tue, 16 Mar 2021 11:59:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42582 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233883AbhCPP6v (ORCPT ); Tue, 16 Mar 2021 11:58:51 -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 6A893C0613D9 for ; Tue, 16 Mar 2021 08:58:47 -0700 (PDT) Received: by mail-wr1-x42e.google.com with SMTP id u16so10753748wrt.1 for ; Tue, 16 Mar 2021 08:58: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=UGly1PyfdY7NZkxrnN/w6B08c0BUdqmdUcZ1EchtmxQ=; b=V6JrZu15POl2a8+72R1BTkIA15U1XW/RnOZnvmR2kK4k9SOgOHWeL2n9tYfoRux6pt n2sonW4N6mtTK+vl03eD0RM3nT+ahGQixa7zblQp8exJWcapiDNWtjnl6Wzu6zoX3hzC mK82XF209Wwu2vQXfPAW4s/Jw+JIknw6wOSpvPYgbEu/QgxSEkwPI1/JWNBdyi1MzOV/ cw9v3W8XLFjtDIxemFyeOx4so/G+uBZLFY13CyZaBf/6xXBJ6adjoVPtgfBW1UCwzeJh 1b5GF9t6kUDvHSUA7T0FEWjhun6vWRe5oNA77Armp79sd89zrazwiVa4XR1bMU9O57gS Ul2Q== 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=UGly1PyfdY7NZkxrnN/w6B08c0BUdqmdUcZ1EchtmxQ=; b=NM7PNKmAot8Dg20vOSsU+SO23sJCHy8Jqib68pFtTBFc4WVuWepJEuHiOK4C6Qv9Qj dYSFsgrGHlLH9lKL5x4d1oZ87/rPj7DL+9lKH2uLYN34zgVTmhNJyvqt4KDi1aDQ2UYP W6M9KxNsv+ztdKwiTTzkXLenNfWBjiu42zW3iTH6PVChx9dsXXRdWw7Ety51g8t2F/fA K8W6Z+SrePkmhIJMcVsM+wm/HcIbb65zhh5L6hi/6yEps1OReN5fYIgDDNXEpcTlR2NV XuVVv64Q9Z6IdVDc4qo372xZgO25UtVq1hfEYa1ZVkSViKqApEw7oH/bUQ2KSFfScVXW tgSw== X-Gm-Message-State: AOAM531mhVjssdbaYOHtyYF3BaFuxuTQZtfa2TRXb+LFudpOWOYKEGlq b2z/Djb3JJ6Padk1T3S5j98vZX3QoNDQkw== X-Google-Smtp-Source: ABdhPJxkGU3twNY/hbNMGD7RaKaGVHII5IVXkK6jwKho0Rl6oQeBHKwe/3/kqzBsdOv5yes8ZPgUBw== X-Received: by 2002:a5d:5256:: with SMTP id k22mr5841123wrc.162.1615910325608; Tue, 16 Mar 2021 08:58:45 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 09/32] cache.h: have base_name_compare() take "is tree?", not "mode" Date: Tue, 16 Mar 2021 16:58:06 +0100 Message-Id: <20210316155829.31242-10-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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). None of these comparison functions used to have tests, but with preceding commits some of them now do. I thought the remainder was trivial enough to review without tests, and didn't want to spend more time on them. Signed-off-by: Ævar Arnfjörð Bjarmason --- builtin/fast-import.c | 12 ++++++++---- 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, 47 insertions(+), 35 deletions(-) diff --git a/builtin/fast-import.c b/builtin/fast-import.c index dd4d09cece..7a89510059 100644 --- a/builtin/fast-import.c +++ b/builtin/fast-import.c @@ -1287,18 +1287,22 @@ 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); + int istree_a = S_ISDIR(a->versions[0].mode); + int istree_b = S_ISDIR(b->versions[0].mode); 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, istree_a, + b->name->str_dat, b->name->str_len, istree_b); } 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); + int istree_a = S_ISDIR(a->versions[1].mode); + int istree_b = S_ISDIR(b->versions[1].mode); 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, istree_a, + b->name->str_dat, b->name->str_len, istree_b); } static void mktree(struct tree_content *t, int v, struct strbuf *b) diff --git a/builtin/mktree.c b/builtin/mktree.c index 891991b00d..2c1973229a 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 ae0c0bef5c..e38b1e1688 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 9228aebc16..ad7058a6f5 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 1011357ad0..a28c19a62a 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 603d30c521..4075d13aaa 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 3d9207455b..1c9b08695a 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 1e9a50c6c7..4257fbd8a0 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 7cebbb327e..6ec180331f 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 eb8fcda31b..d9d573df98 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 15:58: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: 12142675 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 75526C43333 for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 51B5564F5D for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238302AbhCPP7U (ORCPT ); Tue, 16 Mar 2021 11:59:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42584 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238256AbhCPP6v (ORCPT ); Tue, 16 Mar 2021 11:58:51 -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 660B0C0613DA for ; Tue, 16 Mar 2021 08:58:48 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id 124-20020a1c00820000b029010b871409cfso1740928wma.4 for ; Tue, 16 Mar 2021 08:58: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=UR9dRbLipQLRRxa2eAF1Ytu+dU0g7lVZukoQLJi4LKQ=; b=mkNRbFVZYxzuS98DRpqO8nKruS3EoUn4kkvRLBsCGsivny5ZsVBcexnTBdi4lyTqla 865aKbPdU4ATwF1fZES6F/WQ+Ofa5YrUEiyipBBcFC9S/4bHZExnD6BE63TLyV3lCdBR acYUny6d6O19R8pW3UFNLnY1oJeu5D75FFdUULzpzrVeW36Afnue9Wh/PJMGU5Sg/xrc 7gS1y1taTAzdCeYJLO8OAl6nkwsHIRvEOQPH98H09y7mXsu/jIO9oN0aGnJcD35ZeIFV SNtWYh2GmzZ1u39FAcIZmjJ8TiqrkjKiAdLce6Jvqxb6roriiTxBAT+SFbrGH8eIBvng Jj4w== 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=UR9dRbLipQLRRxa2eAF1Ytu+dU0g7lVZukoQLJi4LKQ=; b=K069fIXBm6CPG65D9mBCHmoQXcdwhe/b+6k59OLIzFmYxuH5XUa7XQY1lgNj2b+WzI fjWokT41baimM4axHr6JejaXK5PYV5xk15IkQGHQ4fpowQWFOF26EUvxAWzIfWFgXVHl WtQUb9WBlu65Sl2akjDlpznZ1x2UvGbhHk+XqsvXCd7PHe770Qxbzjgje3ElEFgDW3VI SXis3VawcYZ2PQMo9khu5Fvy7NDIpWaZwa5uf2e9VN/ybbL5j7M4QHTk52PIWBUiRUkE BRK7HPENRQAWd/8qApPeD+0viBSrdf6UXpkmcx3mAICExAx6RG9lyUWMm5QgxcX3M3Ot VaXQ== X-Gm-Message-State: AOAM532A8syMfgpKsETtEO/i+3AyCmbUR7fTVE1yg2z0q1O1CUnuIj4k VCNnV0w/cdgaz1vFMVJ30gjShFGDYOyncA== X-Google-Smtp-Source: ABdhPJwaVBbxfVIfULI0clpCEUOQC1WSyOhI4r9r8WpkHCSEy9D8F8ufA+UymbxclrcT2Hcl9Wrpjg== X-Received: by 2002:a1c:9a92:: with SMTP id c140mr265258wme.167.1615910326848; Tue, 16 Mar 2021 08:58:46 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 10/32] tree-walk.h users: switch object_type(...) to new .object_type Date: Tue, 16 Mar 2021 16:58:07 +0100 Message-Id: <20210316155829.31242-11-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 6d62aaf59a..d3ba1d4a4a 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 6a4a43e07f..234b79a5db 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 88d9e696a5..ac32bf2242 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 b78733f508..1db4e4e90a 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 15:58: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: 12142683 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 0D578C4360C for ; Tue, 16 Mar 2021 15:59:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D6B1064FEA for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238311AbhCPP7d (ORCPT ); Tue, 16 Mar 2021 11:59:33 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42586 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238257AbhCPP6v (ORCPT ); Tue, 16 Mar 2021 11:58:51 -0400 Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 501DEC061756 for ; Tue, 16 Mar 2021 08:58:49 -0700 (PDT) Received: by mail-wm1-x332.google.com with SMTP id g25so10369531wmh.0 for ; Tue, 16 Mar 2021 08:58: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=grrajiSdCpFboFKIiSZ05vISxooNWFcM6cC+zP71AZI=; b=epqwaf0ZZdU8C1vjJSOM1FvUsyUy+cweceQgbxMur1y1OalSdtIBJRfL1mcqRydU4Q ldC0OPgolhjhiwkjGg+CfJBQ9M3hE7iw1g09L7kvfFfDuTz7OIvZP7oQTvaI8GScgz9p 2fCQdcXm0udaodpNVaN2f9GeboPhKEV7eXMV3wGIg4HgKmgFpFJKgNui/HRNG8+2Q7i/ sgETGCj1a0OQ4CRSu7iSfflvAfmgW7++AxTYdhjLIc4v3FeMXfkfMsMf8z216DG83Rj3 zfeJnTKC2XDIURPl2eV3DkQquKa5627eXNgcrz2Cxflc5X3W2hanXT8gyeqFWjDEFFRJ VDWQ== 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=grrajiSdCpFboFKIiSZ05vISxooNWFcM6cC+zP71AZI=; b=BmHI8i02m+RWXgJc/vFa1fMQDWm0f7Z4sSkLHcBDwHZ+D31XjP11K4i7XdqD7ynAVc lF8PvxrhyBsbJK3SrnYq0+KLm9Bde8D5yFh1RzfCU9sNq8YuKSkNxjYr5aVtpZgIsaXS RSlkVul6fecoSYg56nfV5aJZ332R+R3BhEMvwvs6K/JytEiaICHpwolI5aAOavv5Hd6K UhRVbwVdp87hN818S7mS5fENc5AyTVhrVgdpHrbLR5fgrP4E/wDhPCAxvJnuf3pL7lMg 9L69rwlCj6OG1bPsjZIubjgAl0JKteBhE3JfUj8NXDWdQIk+HNE0RVPnZWL5FchWQ/Ou Jizg== X-Gm-Message-State: AOAM532O2rm1eKJlbYpWLFWe9uuSG0HjT32oY16g9uPlg4rDo6gvtoLY AGHyD+tEBj26H4C90kRJnlcyY2esL4A6HA== X-Google-Smtp-Source: ABdhPJzq0f1OLaZR1bkOhX2YohE/OuxSm27uucScPq9XC3Rt4xT+8qwDg/pdiUI10lIyMWhXz1m1vw== X-Received: by 2002:a1c:7406:: with SMTP id p6mr282609wmc.103.1615910327720; Tue, 16 Mar 2021 08:58:47 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 11/32] tree.h: format argument lists of read_tree_recursive() users Date: Tue, 16 Mar 2021 16:58:08 +0100 Message-Id: <20210316155829.31242-12-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 c19300ecb9..77d1238df9 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 0e66390520..0887352db2 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 980de59063..b7b76856a9 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 3a442631c7..8d5c3fd058 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 1c9b08695a..689a3e0007 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 f0b079d2e9..c1a936fdc4 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 15:58: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: 12142681 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 E9994C4321A for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C422164F5D for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238308AbhCPP72 (ORCPT ); Tue, 16 Mar 2021 11:59:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238258AbhCPP6v (ORCPT ); Tue, 16 Mar 2021 11:58:51 -0400 Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3294DC06174A for ; Tue, 16 Mar 2021 08:58:50 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id j4-20020a05600c4104b029010c62bc1e20so1759250wmi.3 for ; Tue, 16 Mar 2021 08:58: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=IeGrtTvFCx1XRsD56Em6f/tht0xXub02J+kDYDfwAlU=; b=eeYpmSgZ8wR+4+z3U6DK3VZqoz9mgkhcyeaFSU/CKF5rQSYhkOtkY+0Bzw7+cDg+bO S2Uir7COGke8Q1m52qd/VkdZ9jycZv0Lr57pibOYS+asBGJqMFR/pmDO6dt5SfPBt6Ul JCfeOsHlnOIqm41B/wWkP/uZCuVqw1/Yl7W0Lxw3SaK1CHpEwqeUk4Zp44TIzPp60N/Z XOM1U6p17SeUj8PtED/CxR0BUFGyIOYcLPczGSbZMjHk6xEttlgJK/dn4iW1sLEL0n31 Ftt9F6QsFY3/c2q5UrBf1cZA64WJ+79eD4qtO72e9ZXfd6Rx2+uq0z744iv6mIBvWTAD tikA== 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=IeGrtTvFCx1XRsD56Em6f/tht0xXub02J+kDYDfwAlU=; b=s1JtJjWvQ98YyymyDOvuGVUP3lzPE43RXAlervgCxF8y+8tY8ndXDQAckkwzd7vjqe 95QrtAos4Hb1qfIY/E/mllYlyVGWEiWQ0EQowTOeD6PiR7Gyl2zudjcDPy1nlShna4qQ b/KUCrSbKTVymMa/A1/N3I53W/2t+MawC0afA17NloGcQz2tqFQyCccKAQsAnug/RqMQ mW/RE+75Woq94SGHq5xNm6MixlBpr2HpIib5jnUygixQaxq78CfKg+oSiwlzn/YgvB8H zmrB87scOOCgC02YgtmapiWdmCM6IELYHQdg0gU2sxWzVUlKV3aTcNhtEHdxRwfNY75I QH3A== X-Gm-Message-State: AOAM531T7vnUsiqxoJxz9Ogfo5hjyFs6cMo5Ne2F6IrQSSWgJLmtXtvv DhSp3XmfAwFMkroQ9q6l9Gbvi+xvoymIEg== X-Google-Smtp-Source: ABdhPJxRjieDQCaArXE9EQtiqLbr/BTSUB6+T7RPWZzjBwWuLGtTFNUBsa9LztonaUZ9eyj3WR5TjQ== X-Received: by 2002:a1c:a791:: with SMTP id q139mr336251wme.20.1615910328674; Tue, 16 Mar 2021 08:58:48 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 12/32] tree.h users: format argument lists in archive.c Date: Tue, 16 Mar 2021 16:58:09 +0100 Message-Id: <20210316155829.31242-13-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 77d1238df9..8ff97751c2 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 15:58: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: 12142673 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 8E33EC43603 for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 76CC9650F8 for ; Tue, 16 Mar 2021 15:59:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238306AbhCPP7Z (ORCPT ); Tue, 16 Mar 2021 11:59:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42596 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238259AbhCPP6v (ORCPT ); Tue, 16 Mar 2021 11:58:51 -0400 Received: from mail-wr1-x434.google.com (mail-wr1-x434.google.com [IPv6:2a00:1450:4864:20::434]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 206F2C0613DB for ; Tue, 16 Mar 2021 08:58:51 -0700 (PDT) Received: by mail-wr1-x434.google.com with SMTP id x13so7701986wrs.9 for ; Tue, 16 Mar 2021 08:58: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=f4nbLGhI2kyMPM1blKLzInCpiactv6pBIV3uzzH4NVE=; b=B96hDKP6gSMR8uIug8zhEIwMW8DTxaiZerfk1FI6nbuPoQzdeJs6ZpmLxkKK2YekWk Gkhbq8mlNnUZ2PdGYbFZNFGWBisE7GThH1nyn6DnuYUwVaSgdZ1AENpYDFmJ183zUT/N yqsWLmNS5b6u/ugcfzR8eaZQ0bPKVov4LiPnD3X7iZmrJZz8yMD4wlKHSfUPL50QOEEC x6bmFMd+QdVPrDlTJ1NCMnwGtTSAyUHu4kIPx2JSbWxRf7Tybbo1tRUFclMjL5V1TPeG aOnm0dvX8O/oU1JMOzNsl+Am/m3AQt2u6mMf8VAIctJFPGZCtASuaUB17s5cTsvRiZZo WRXw== 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=f4nbLGhI2kyMPM1blKLzInCpiactv6pBIV3uzzH4NVE=; b=oeggTgZsC2AWITFmamEXWx3O+LsO3FTOnfzylACoP6Xrr5jyo1WtN8w6MZ8ZzS4jX4 yg2CNVdyBxWPjW5quiu/SmjN1/ynRwN10lNAvfHkgwl1S3NzCv3gBWzWx7VCTZ+voJYl 63Yxj2ETfTejCNS9le3hawk78QMQ/J3Kok0L0X6g+LJfAUnw1wDvI32QYteUcCH2ECg2 6z8Dehb6ZJM0evLtYOEsMVWt0B5HyqUBgSIVj0OkabSKa/IiN7um470wge/NHgBs3Z9D BWCuQ0nex8EogKEMcMvLzuFsSmd5UtwgLGp0DkrYUURHnBV97X8/bNm6dR+WOD02Yk5S 32kg== X-Gm-Message-State: AOAM531ji3L8sW9JyVSnW7rV6UDv84dLqS7595h+tm6sugEGn3FczkHE YQ/7Sm7EnUiTZEzbw1Vvmw/nMQKGcgTTmA== X-Google-Smtp-Source: ABdhPJwKWj4kd3ALaRMmZMOJN690cu7JgTactxlpdXxs76gunNhu2nIrJ/6tuRI9BvCTjlciBnvAVg== X-Received: by 2002:adf:a3d3:: with SMTP id m19mr5753284wrb.24.1615910329556; Tue, 16 Mar 2021 08:58:49 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 13/32] archive: get rid of 'stage' parameter Date: Tue, 16 Mar 2021 16:58:10 +0100 Message-Id: <20210316155829.31242-14-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 8ff97751c2..529623167c 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 15:58: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: 12142685 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 797C3C433E0 for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 3FCE5650F8 for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238314AbhCPP7g (ORCPT ); Tue, 16 Mar 2021 11:59:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238260AbhCPP6w (ORCPT ); Tue, 16 Mar 2021 11:58:52 -0400 Received: from mail-wm1-x32e.google.com (mail-wm1-x32e.google.com [IPv6:2a00:1450:4864:20::32e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0BCBBC06175F for ; Tue, 16 Mar 2021 08:58:52 -0700 (PDT) Received: by mail-wm1-x32e.google.com with SMTP id p19so1456187wmq.1 for ; Tue, 16 Mar 2021 08:58: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=iB38tGwXcaYy9JbS6OSzE6h45fgCZuI2e9yBKA3qVo4=; b=RK7a6Gv2geIGFMV6nwTshigtA7Av4jk3TsguwezwKx5G2FiBB5XMA+6ohXS9pHE7Ch FMZLwre5snpsArIqLbNuIzbsEsg+6ZFMZd/z7jkEuDxnyl/2QQotChzQaifE/y7ruOG4 p7O1H2r3asWwFEmlafhVqChgnVJzKc55IOAXWH8fDtnSx3JL5qcc2kgMyKw1h+h/wAb+ GP1soUXs6IEuuR1IFYTZ2oYjC8LpdoM6f/R8vImk7TA0ltwVWxFmYIVFxxl2SLmShlzf b5o0Cj3lU0zGEaqCgKsWDdwelj1bby0Eps98JZzNBO99jpy6acgHJUQuNgVSseNZrPg3 uDtQ== 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=iB38tGwXcaYy9JbS6OSzE6h45fgCZuI2e9yBKA3qVo4=; b=JCgQ5o3h5+5Fu2iMjuRUFvN4fXgVIdfAaLxwYGt8hQbCEHM4vKHFpG+CAa1UiWWKU5 d1BrJDUyZPu5T4E+2HjyXfRyERtb3BiD5fU0QAA9FjAcqMpkUq8gDsZBpJIF+RrCBUnw 2FAQ2BXxkDq5nliVy9ykSJhCUm78gcUkj8XogJP8MN4wFnztDG3dN1Y/9QYQXjIqYQU2 wVl61MvQgQQbRYM5MYhu2ZYl8wEbKzj1ZNfXalsngSbddqgGoFvP/2eADQt/uWF4y5nS IZmyah9nYR06P6flzSQ6FMUyvEM/8GanMMPLZfAHqcJ3AJZg8Ps6Ba7BUXtJp2OIg4+u WTYA== X-Gm-Message-State: AOAM5314Oqrh0PY7HplnrXk/1gsESp+/5RfkL5zsBkyfLuSclfoT0wip hFQ05feM4MCPiOvRoJNuWAQKauerPnKbRA== X-Google-Smtp-Source: ABdhPJwcIfnkdUkEfc+MizzVXm9cI7/QRva+rxlur0XOSk7WBk+Xa6pK9C/pNOS6zJTgLDwf8lkiKw== X-Received: by 2002:a7b:cc0c:: with SMTP id f12mr282814wmh.137.1615910330390; Tue, 16 Mar 2021 08:58:50 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 14/32] tree.h API: make read_tree_fn_t take an "enum object_type" Date: Tue, 16 Mar 2021 16:58:11 +0100 Message-Id: <20210316155829.31242-15-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 529623167c..254e15c8d0 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 0887352db2..95b2b0edf2 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 b7b76856a9..c25f75472f 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 13bcc2d847..b954d08ae4 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 8d5c3fd058..7176d2ae06 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 689a3e0007..df4b369902 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 6a2a52967e..c840bf2ea2 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 c1a936fdc4..12edb316f0 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 15:58: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: 12142693 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 C8058C433E6 for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 9BC6D65102 for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234211AbhCPP7h (ORCPT ); Tue, 16 Mar 2021 11:59:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42568 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238261AbhCPP6x (ORCPT ); Tue, 16 Mar 2021 11:58:53 -0400 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C572C061756 for ; Tue, 16 Mar 2021 08:58:53 -0700 (PDT) Received: by mail-wm1-x32f.google.com with SMTP id t5-20020a1c77050000b029010e62cea9deso1785598wmi.0 for ; Tue, 16 Mar 2021 08:58: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=B1e0auwR7dQ9081R7lapYX5pivO4iWA57pTkN5noa9Y=; b=GmO2aP+WH4OR6g8x16udPzFoVe74sOkYXeFqNcLaVxWaXkU9ar0i/ViNI+oYDyGSr9 /2ibHGnFemEWIQmYrvDMNeFNV3a9jJAyyfnGDHKkNNlItUw8gll+afiy5octCqoCCZdD QctSfr7StuRarxESyLj4F4sJydCJMMweh41ZCQ06EgnKpV6rEjjXj4XOxdEioUd0uEK0 wwlYQRwRX7UJzGsV6+xuvX+g9UpIaAd9O3SwnnzoeZLAd7iYXD7zXRj4ASDi58jBo3fQ TRukDn7/9KhD2woYu2fvxMyPoSnzohQU9k/id/A7/MF9yTGe9g2a9mswOVWGr/Imjo1S GvgQ== 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=B1e0auwR7dQ9081R7lapYX5pivO4iWA57pTkN5noa9Y=; b=sekWp8UakARBucLBXrShNln1Go0H9ZSQRhbMbo0lG9cU3Pq5j5+Vz9WBBZ8ILNQUw3 fo4HWrPHIrCSqaGr3uF44yfxus41qaa+MwhnTlWORUkLa++FDM29YRVHYTcQ4WQi/lES 8YLgq53mPWODdCxem+TIwtooqQBCPl2+IBGpAKhLlVhpC818wB6ow97EsA4GZm/1WJpi pGItouwlPgrmwwbV8Bxbq6imLQUdSGpXNjj0VfF6avMVf+hnCAbr02IDVO+VMD9/yAnv OmjbZzeJ7BCCaIQCNaGzcQ7vFL+iXi8qCVACScsBp2s6DJEt1Xg8LMpmlZVah2Ldf7sO Zt7g== X-Gm-Message-State: AOAM531TzjCq0OKzLp7+03csLvKyeOypCOykuYLx5L2dKtt8F3GD0s2I OzSyuVSSbgfgx0V6tUZBO8uuXnc55GQwQg== X-Google-Smtp-Source: ABdhPJzR6SFDMp1LhaED3MA56/YW3QDZyvjHubwn/raW4MElsq044zTSgFx9hpyHsHrUcT2W6ZmDTw== X-Received: by 2002:a05:600c:252:: with SMTP id 18mr294164wmj.67.1615910331454; Tue, 16 Mar 2021 08:58:51 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 15/32] tree-walk.h users: migrate "p->mode &&" pattern Date: Tue, 16 Mar 2021 16:58:12 +0100 Message-Id: <20210316155829.31242-16-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 de8520778d..2de34c2d48 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 4075d13aaa..4375027914 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 d9d573df98..802de46228 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 15:58:13 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: 12142687 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 D4A2EC433E9 for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B24B0650FD for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238286AbhCPP7k (ORCPT ); Tue, 16 Mar 2021 11:59:40 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42604 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238262AbhCPP6y (ORCPT ); Tue, 16 Mar 2021 11:58:54 -0400 Received: from mail-wm1-x330.google.com (mail-wm1-x330.google.com [IPv6:2a00:1450:4864:20::330]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id F3652C06174A for ; Tue, 16 Mar 2021 08:58:53 -0700 (PDT) Received: by mail-wm1-x330.google.com with SMTP id d191so10369266wmd.2 for ; Tue, 16 Mar 2021 08:58: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=iCYR4UnUBybvwWKfU2mGCHe39W9o9ieG+hvRE1W+5DU=; b=Uottwc5lEJ8KGL3GNTRU0LbZEpWF/qS9sAyH+y3qZptpw9arrI9TrIBxHqtgchqirG l+hJbUSixYO76sLKCO6TYjRra3fMC7JTGEo+ZF60p58no0WytVYIWrSmpKBRF67yaS7W 8G/IpCUE3WAtCXkEYNSyDUxPob+KeQaDXQCt3xFUc08HIsOEgy65rj7Ef85wmkOGmDXB hj7JylQzg9RhmP81+hQzLpA1f8nw3uL/PHTJCrPaBrStgFgPvUEtljiw4lT/StYfxT+K wjBB9DA4XCokXbkqNoKZ6y8h29Oy4wd7SvMZp2GAKFIGoOSVQu/ibpg4LSNexwwjW58a EgqA== 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=iCYR4UnUBybvwWKfU2mGCHe39W9o9ieG+hvRE1W+5DU=; b=fzpQ3reSBguquFD1DxlAcqlieZ4/J4fqsk/ZtTg0RdljgGHdOdbsLbTX7VuOvSpk5N WCltNWDJWfyYQ4v/XSGad84RohMqW2wyELVtLo/JRdii75xYSY0/yUHNcmGZDG1o6XiX lo44WV3+MwO2PM1htJwKNaMktaGC2G8TFO4YE7vYtco8cLRS7bqmGXvU2DXC/zmjFXm9 L8DLvoXc5rAyg362eelklkCYjkhWgfyRZzpxUcclIdp5vyS7JxzuGyXp8lPrspr4Txz1 S+NevK8HLbWq1HMfH7c7It8O3Dqiz8PH+YfcOtdwmoHjZ8xDpj25WvMdVMHZyywse0BU aWiw== X-Gm-Message-State: AOAM530r9D8tUls7SAwQMUdPo0Ihtd7/6BM82EcIfI839v3nPMNE3CNu Z/PQra+/dFCXFFvny6ImRF+j9zjgZ7d98g== X-Google-Smtp-Source: ABdhPJxaAUl0tH1GSBudONbFUul0p/36aZgg8ZA03M2eBdCz1/pelKkhNf2VhMEvigCPGAD5trwBVA== X-Received: by 2002:a05:600c:4f4f:: with SMTP id m15mr303402wmq.29.1615910332477; Tue, 16 Mar 2021 08:58:52 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 16/32] tree-walk.h users: refactor chained "mode" if/else into switch Date: Tue, 16 Mar 2021 16:58:13 +0100 Message-Id: <20210316155829.31242-17-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 e19589baa0..37434ba89d 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 4984bf8b3d..7ba757244e 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 15:58:14 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: 12142689 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 E8174C43381 for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id C141B65103 for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238336AbhCPP7r (ORCPT ); Tue, 16 Mar 2021 11:59:47 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42608 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238263AbhCPP6z (ORCPT ); Tue, 16 Mar 2021 11:58:55 -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 D4A52C06174A for ; Tue, 16 Mar 2021 08:58:54 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id g20so10390518wmk.3 for ; Tue, 16 Mar 2021 08:58: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=QuVKz8WmiawGjaRMw7oGw78RKOcE8W5lgNR5rRfp5Lw=; b=vQtGNMEI1AjkNFuNwiprpi7FwFZk+bp9M6ZEQ3+6s+q9YU30fDp+/IW2ipBr1oGP3i PYshL+tneHbo094Ka0SOv/ejnohHb0Oidi6EtE1DDH5lWlmebedJHIWJ0YOYynqhFY25 oc0qL2ZzI8snxhdQ8Ny5YHFVezlwE4cDc1iV98+Rp3cPfMxKhrnNRmEYcDTGUA9NNec+ qEGPLLIaozFnATnzhzC86dcerSq6X4JxPVInhnrEnyKud4m7tGfKnVdH3W1hiODiDVOk C8TFMNoHVes/Khld2nBznHemrgVBDhav4Q8PwsOBUrUlXRPHno2XyqxXJUM0BegK7bbY VVAg== 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=QuVKz8WmiawGjaRMw7oGw78RKOcE8W5lgNR5rRfp5Lw=; b=ORAQiiADcDGEj7Hw959S7jLT3UtMX7eGxMd7SHi89rXWRAlG8eAWqjWwqJXLyVs80y O2PDh6saiU1691pbTvyBhzqcjHpz8Etr7/1OUtaPnYtgTjlyB0I6+T9VVihtPv1B3Mbs MoyOGksQa4PavkTVQyV6PZzctxcXwCiwHI5NePrQb6wqxPfIubUQF9gIT9pqKnADzDNA vgblp+5nvjKD/CVQ6RvdYX7iSIrxI578ZxB04xf307pwFd74blHBmsmW0a1EZZH9B/an fXxvX98KTDqD5B60F/6QnHR3fmS6vMeczfNLxw7T9W8qltn202YYmcyW57bP+0Hi3Gjv kJog== X-Gm-Message-State: AOAM530Oe4rGPfFH6rtKB8NzTre5PSJ4t/IZipYi8o5kPCoftRdXOa80 GNAWXGDSgS7t3TRt2TveIpQMCb2UuSyArw== X-Google-Smtp-Source: ABdhPJyi5BSvGtapc91kEtVBaKkKL6LZRJauDjDjAf64SFkBcPXlfa/9NI1fOO4erWPErL8IrSMWvw== X-Received: by 2002:a1c:7916:: with SMTP id l22mr321330wme.86.1615910333287; Tue, 16 Mar 2021 08:58:53 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 17/32] tree-walk.h users: migrate miscellaneous "mode" to "object_type" Date: Tue, 16 Mar 2021 16:58:14 +0100 Message-Id: <20210316155829.31242-18-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 4e91a253ac..5a317cdd2f 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 2de34c2d48..12cb317c1b 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 d3ba1d4a4a..f92722c12d 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 09541d1c80..bcbca82aa9 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 2fb483d3c0..fbe93dd2a5 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 aa98b2e541..e7cf93acbe 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 0a5b4fa1db..d631dc5623 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 802de46228..33de78e32c 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 15:58:15 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: 12142691 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 0A411C4332D for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D090C6510A for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238343AbhCPP7t (ORCPT ); Tue, 16 Mar 2021 11:59:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42616 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238266AbhCPP65 (ORCPT ); Tue, 16 Mar 2021 11:58:57 -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 D4C69C061756 for ; Tue, 16 Mar 2021 08:58:55 -0700 (PDT) Received: by mail-wm1-x329.google.com with SMTP id u5-20020a7bcb050000b029010e9316b9d5so1764084wmj.2 for ; Tue, 16 Mar 2021 08:58: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=BBovOeWSldocWwSfGIvadIZvA4VzyvsdqtM9aM50gFg=; b=g3G2RZCDKejpg5R6YFDhZKB8s9xW9GbwZtTLzL4VVYJ5ej1DO3r6MlocHa/SnvDmQB Cucdzp9pt2YA3jq58THTuGhF4uINUpvpRAqITZJv5EX6iez2nHO1TJbLBp+fKY47IflM /taRHt3DaBu4dzDSc4gkXJsQDb/7uCOsTu5jegWiaIZR/uk+dp9w+uEbR66UnLSFphF6 z4r6Yy5RPLcLOj22lQsy6qFBWHu9Im/AlYFYDZwF2aGG8Xva90QxuI/Ut7Qqjodgh2wH 6pFyWds/nqQVs7oE+NFwK2N+xZG/7pu/W8fi8j9LP93C5m1+FmCOrN3OiLkH1w11tSu1 5YTg== 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=BBovOeWSldocWwSfGIvadIZvA4VzyvsdqtM9aM50gFg=; b=QYdscxSaaQYqtOvMe0U7i8466CItW97qrCmFfMAAkO0BnLCtlVhudgzJJsh+WCwr0b QSxEiyY3GNVdyXCzkq/hcnpBFucCyOQtnkvAcPWAvOXbZOLn7WPGNUB6iD2YxHP5TzeI ZHPru5mIRH4N98tduC/TJycJDdhzFvE+xBHVzShDBjJE1FpFJ6f8BAUsMrWQPJjb+oL0 BRPmzsnHR34Mwk5mLkzcTsHbJFZOyedoumCuebFRZPjLdbnpg9Q2WojqdTrHIVB+xDTT l/mFEOeHcHMhhOyq27XhrhZJbUYRB5NAOIOC5ZA8EGp2NNSpXp23DtZWyaVA1CmBM4ZF JFlQ== X-Gm-Message-State: AOAM533jdOE1oa8KKOSSXEw/46n9dVM414YM3EnZ0L5bDzg3xzHYQqof A0u/l1lP+uB5ETi1U4GYjfbm3rocIlbcZQ== X-Google-Smtp-Source: ABdhPJykk1AcE1KgObVHP234QQNXYORLW0p3nkTZyGNqf6UsvdAXqhMVDrBku0ueh9Zz/gBu0pz8xQ== X-Received: by 2002:a05:600c:4f03:: with SMTP id l3mr281182wmq.149.1615910334325; Tue, 16 Mar 2021 08:58:54 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 18/32] merge-tree tests: test for the mode comparison in same_entry() Date: Tue, 16 Mar 2021 16:58:15 +0100 Message-Id: <20210316155829.31242-19-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 e59601e5fe..f783d784d0 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 15:58:16 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: 12142695 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 13EEFC4332E for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E4AA1650FD for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238346AbhCPP7v (ORCPT ); Tue, 16 Mar 2021 11:59:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238265AbhCPP66 (ORCPT ); Tue, 16 Mar 2021 11:58:58 -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 954EFC06175F for ; Tue, 16 Mar 2021 08:58:56 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id g8so10396741wmd.4 for ; Tue, 16 Mar 2021 08:58: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=ugpkTIyIItR1wrajx1pDmqo9XfOb+gcquU0XddKkqVA=; b=OL1OeCPLdNvmkqhxbj2aQeA7J6Jr72Kwrq0oFPJEYgr0l39fjqQhzXOEdRW19yBqkI yo3tDiVsO3xUKE3Ows6ZVFCAT4Xc42rhlTrOerJkJVSYS6RgnXnsjpL0UE41M2x+24VP uWBzlSTfI6P+dcWRrDbEf2pw8c4cmn6yNsVUlMxHXBRaZTQJC5wAv6zzFM6kbR/llmc1 ReY2VaohqDH4KRQzUPuvPTT0h3k0WiyfpeA3/7ZlUxHQiaFf85WSxLIvRVLEBvJC9WnL KIvYg/ahzr8HLK7L0Wnru6mxayjwQ1ZaJbUcnHCuFWuASTCr6QHgwNn/0l+wyBPz4r8j 7grQ== 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=ugpkTIyIItR1wrajx1pDmqo9XfOb+gcquU0XddKkqVA=; b=pylsdpV/Z8QGOot18yF310Q3a4Qz1QDGD3W7dewW76s4CDB9J2RcnEdtLooUgGLwnI V/hRFoyvKRcKhu3jZakLjwwS4jTOHWy4xS23lWbVNyDr1dnPFKubNBEJPRolBMg5XtqT Ev/R7Xr3O+gC4OCU39bZ/dGtPIfezNKLjYnb+YRYje+okCb2nuh5cinwx+Sah7i1EOgF MgYCsVpEyHiv+BxEKZ2kg6dkQMKmYSjqnqNapMsULhwQjVtPXD77N1LD54vpDXsPMYPU o+nHizhn+cJcH8OpsiJR7UzscL5Y1WYWT6w2UL6P7LWXnCNC6TYdI7NAN7dA0g8zRD2v dE5g== X-Gm-Message-State: AOAM532Sr4074aGzTnXNhUqjeztMnB+GPBMzKn6+tyC7TOnud5utgCST X3ah6eV8SMpgEIW+WKRnAQTmo//GgHOtOQ== X-Google-Smtp-Source: ABdhPJw0RRgqlxNBp644aDDtzoXOIenj+39pkrfRK8joyGZxwcRsMBoWXm7paxA5qMd0xJ8nT2W18w== X-Received: by 2002:a7b:c096:: with SMTP id r22mr325896wmh.102.1615910335069; Tue, 16 Mar 2021 08:58:55 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 19/32] merge-ort: correct reference to test in 62fdec17a11 Date: Tue, 16 Mar 2021 16:58:16 +0100 Message-Id: <20210316155829.31242-20-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 4375027914..e54be179bd 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 15:58:17 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: 12142699 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 290B9C43332 for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 12CBD650FF for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238362AbhCPP75 (ORCPT ); Tue, 16 Mar 2021 11:59:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42626 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238267AbhCPP67 (ORCPT ); Tue, 16 Mar 2021 11:58:59 -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 69561C061762 for ; Tue, 16 Mar 2021 08:58:57 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id u5-20020a7bcb050000b029010e9316b9d5so1764125wmj.2 for ; Tue, 16 Mar 2021 08:58: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=GwmDG2ryu0ZbzFdor8XDEGf2S52zGtGXkeHiA4hIOZY=; b=kfdTXbV/10adWTJ3rruao3JGfxt859jZrFK+vbzmOJeCHIBo0jbV358cIGYKXDhAd3 OkVQX6wIZP+AxJr9quiD4J11huPT0ebat0w+uerrJDwNaHE/HdAQQqkFPHyKQr/mUFW4 m21EnSSEC4W4vLV2RpayUm69PqWKNLOlHnCLHMJXeaV7eOLqc7HDJIG8tSVmaIq/yTsD OFpSDlqCJoG/TjLKmt0tXfHXQyVOpV+WMWeFk3PD7xukTUFsCqiPuEdKxqhgNpwYKlC8 XdlAasliqNIri0jR7cWt3qovMRjzIPT18CRxLXF+xxGBe85+ffRszS44VXX5Ucm/7z7p 93Dw== 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=GwmDG2ryu0ZbzFdor8XDEGf2S52zGtGXkeHiA4hIOZY=; b=Vo9Ht+b9i8bUTQ3n8HvOeBfQQQ3cL58XMah61IIqrcEIU0rgHJSoybPMYZHfHsxbKc CpZj2xEt9jgVFabptvE7GAVh0lwosnRdwAm9iqt1niR0OnkYaCNEUtCzMkKMy84x70QO C65pTNqPGVXKgyH7IqbjVTs9s4SBcEZZYJXVxVeDYyROS0o7Wtm6P5wxhDblJxeiVgu6 VUq8xObzYQzt9C4QM27xYXzxdqLBIOf5VAEpHRgkoBTDS+9ieMIdpLbvXntOmz2ilw9o wkuN3mlPL+Cjv1FUwOwjdaR1INc8nO3IxD3LjlPCA+p05r7Pcb5zxsVSNb8ijF3b26eN RTyg== X-Gm-Message-State: AOAM5302ro8wdfOfu/mihnSqWuaJElkQg+z+0jWWp23nM5vA/xqmj+MI o1Lhfn02KrUa7E53pm7Ys1YCXpfgMBTC+g== X-Google-Smtp-Source: ABdhPJwE7Qrd7Y/NSHtch8+wiWkdGWX6zynybvNaDMvG1F59Fc+9FZYYv3rVbdUKGl45xA4dpze43Q== X-Received: by 2002:a1c:61c5:: with SMTP id v188mr336837wmb.20.1615910335947; Tue, 16 Mar 2021 08:58:55 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58: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 v3 20/32] fsck.c: switch on "object_type" in fsck_walk_tree() Date: Tue, 16 Mar 2021 16:58:17 +0100 Message-Id: <20210316155829.31242-21-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 e3030f3b35..7c74c49d32 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 15:58:18 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: 12142701 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 3B86EC43331 for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 236A2650FD for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238365AbhCPP77 (ORCPT ); Tue, 16 Mar 2021 11:59:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42632 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238264AbhCPP67 (ORCPT ); Tue, 16 Mar 2021 11:58:59 -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 99AFBC06174A for ; Tue, 16 Mar 2021 08:58:58 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id w203-20020a1c49d40000b029010c706d0642so4072175wma.0 for ; Tue, 16 Mar 2021 08:58:58 -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=V53v4KA5Iv6ieJZpQqa+DEoBrXirwVZSo+BHIHEfqBA=; b=cqIGGdv9QnqpkxZ01DtJ7EfEkDR4lwwbxQp1HjkJbP1jy/Vm6SCoR40BopJ5p7NQV7 oKie56wAWdw0l4H5z/CIAABBnDDJaPbJIym78t3ws3LAC4+UWvps2WsgmbabiwEmkkZh src0fS2i5sTGspRC9OYAiNqTr3MPc7EZkEZqUzCVqGK3zfieB69pqbZoGtYYZ0Bysk1r v+KOTBkxLMssDgORRP64Jo2a4ITJ0VM5TGjtxiXvVm4MYVqo1JvV8iA9U54PQY75vRZh QL/VMgkQBF3T4civ9kzoLfG3L0GEjBp5qg8xOcvRIrOKQq6OULrrDG9ZuKVzZk6YfSdH 4ZbA== 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=V53v4KA5Iv6ieJZpQqa+DEoBrXirwVZSo+BHIHEfqBA=; b=k78/NHhXfHdq7jqrH3hfEmCNGrFHmtXG2HK+QmzcWp5udks2QRYW4lJfWOkIyMuvg2 OYr5qc51xKJZIUahg50eBwX+fOCT/8MYzAKlV0iRxbRsQ2dmcakAYnzacFdvPVIS9zjB bRJmXyXi6T3B6JyL32ONXdVQrihzMW6n2gPIfauhSs1eY+UrieLKtGsAkmv09Lwnqj3l vCN7Cxnojr3mm499RBinPNxDdBJIa67PFmW4zw49BoxHuHpMVWz/y3GuykIY4I4kDKJg aeXIannJ/We5oRUh32Spxcwr1KGdd9OH4KuNWOdLACzkfddeDQvkKfeD/IZRXTUoPmlz bIpw== X-Gm-Message-State: AOAM530zgKBb/UyAucxMtViNGnq3NfzzkOZtvW9s9owDbNkHCtDuZuvw Fq59Ru041qG5CH3QykeRmw5DFImw2BvLMA== X-Google-Smtp-Source: ABdhPJxVYB05AXLBPOfI8JsnSoSLiju5ntt4IXYuJIHPaANMGTPU0zWHOIZa99eNUAY7RH7jdKjZqQ== X-Received: by 2002:a1c:9a92:: with SMTP id c140mr265777wme.167.1615910336734; Tue, 16 Mar 2021 08:58:56 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58:56 -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 v3 21/32] tree-walk.h users: use temporary variable(s) for "mode" Date: Tue, 16 Mar 2021 16:58:18 +0100 Message-Id: <20210316155829.31242-22-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 12cb317c1b..eec5b90656 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 a28c19a62a..f3e192ca74 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 e54be179bd..cad1043650 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 d631dc5623..688d03ee9c 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 6ec180331f..088ed52d6a 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 33de78e32c..2319b114ba 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 15:58:19 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: 12142697 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 18D03C4332B for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0273C65103 for ; Tue, 16 Mar 2021 16:00:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238361AbhCPP75 (ORCPT ); Tue, 16 Mar 2021 11:59:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42630 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238268AbhCPP67 (ORCPT ); Tue, 16 Mar 2021 11:58:59 -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 CC293C061763 for ; Tue, 16 Mar 2021 08:58:58 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id y124-20020a1c32820000b029010c93864955so1743126wmy.5 for ; Tue, 16 Mar 2021 08:58:58 -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=6mfVU/pD6oqADQCq558uDybfj/kXtDOp8lLFUDNHcmw=; b=HNgTTIcxBZKoVN/oDpwQ0x5Um2wv8piTdK2ZEQFxlD5LkXbgGklLY6r80qNA9RitOf QSnz16PoMmdYIY6/vJQKykPaxSdQmEinpAd/Wb2NBSt8bzR5RaqOKnhd+SKSEZUPntku ixA0DoPApnf9edT9tGwHyBsugEk5U1yYlZ9gGe8AZ4cKonxHwQvvXyPCwXeJD87nK5q6 +H8lEH84PHrLnCqF0xQPmJLu8Mv6T1QStrYQg4n9rdi+DMo/kl2nK6x6GfG2g6uGNg7Z 1J77i+OBkZW4TziC4TZzWFY+nK2kM89LXgdN+Whn4BRupGmfCCg01Vyf6O0nb3N3VGL5 Ks0g== 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=6mfVU/pD6oqADQCq558uDybfj/kXtDOp8lLFUDNHcmw=; b=pdjATfE/J/QusJMBQhXlCwJXFVaFsjic75ixlsgIGQa3ergU/z9Hd3/nWRGU0IcOFz IRld4msHz0TkwZtSXCacuVHadVMYq2jFeWJuSiq6Mdy+7PBtjph/RPaOLJBUFVCuN0ry X3u0G1ZUIrUCTvG/+oJGFUIe709G4LHMtMsytz1SVk8VYqVhA0uJKo2D+ai+wCGJS/Yw JxDmkgOBsFd8KBToth/rtT5genIjUYtZckwIo/KLkJyTEAzB/fL5bknmPv0Ktn4x0eZY nBfxHLR4uiP/Vv4RjNxsW4GJMQPtVuucX6PZFdkxYbk1X8a47wKwCAWbpObRAbgQezlr drBQ== X-Gm-Message-State: AOAM533royVmH0u/uK7hFq0STF/q0JYr97MILzplivJ8UlSUXWIsMsnc XGhX1lloxlLcDw9G4jq2A90TsrlpHW73SA== X-Google-Smtp-Source: ABdhPJwJuRvBU9xbKD6n5uqUO4Cy6iFvBN0mB6ng9qZD6NorATBV31sY9HLutLMH0aiv4f9lZugnKA== X-Received: by 2002:a1c:7406:: with SMTP id p6mr283146wmc.103.1615910337291; Tue, 16 Mar 2021 08:58:57 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58:56 -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 v3 22/32] tree-walk.h API: formatting changes for subsequent commit Date: Tue, 16 Mar 2021 16:58:19 +0100 Message-Id: <20210316155829.31242-23-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 a5044fcfaa..83babc41d0 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 6e9161901d..e88187e371 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 9f3825d277..478a659ee2 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 15:58:20 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: 12142703 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 4DA3AC432C3 for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 34ADB650FF for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238372AbhCPQAD (ORCPT ); Tue, 16 Mar 2021 12:00:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42640 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238269AbhCPP7A (ORCPT ); Tue, 16 Mar 2021 11:59:00 -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 D898CC061756 for ; Tue, 16 Mar 2021 08:58:59 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id r15-20020a05600c35cfb029010e639ca09eso1758047wmq.1 for ; Tue, 16 Mar 2021 08:58:59 -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=L0ClHHaHWmiyRUgcgtl6GlTVSPLpbzbsFAP7kfmTqjc=; b=ORNiQawy5dqb2QmOEwdCb1OxU23iRqIWM9MRUKQiV7HahM4A3yjh5fYw6roIl4zAuJ 8tQpQL0FEwxkbn/cg4V0GCMgWJtRairstKpGq31/yBCDZOoT1z+OLZjA2JsTmwtd2prp 6PGJ9+wT2W61UguKzw/Pc0W8jt96VztGG9q5hBUJurVm9Kc2OdbtPmlAi8GBhimSAUb2 6fWZRTT+mIZ1W6VxjKtnjeD6NfBfKuiiG+EB0HW/m1oQBP18gqfVg5kl0QIW/qhL9hBU T3GnExCLTlpPLm/1TRI/xZwRubuuAktR6KuzIYKgfRpp10Vo7/wQio7bXapD4KEkpj9B EBbg== 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=L0ClHHaHWmiyRUgcgtl6GlTVSPLpbzbsFAP7kfmTqjc=; b=gnFmkqSc/FQWUcYKJRabaKiX0ecW/JE1pwkCuPiTYQVof76f96ouNI6wRDl+SxYv5U xaS9mj5l2o7Qo0OisNlOB5WD2vnzrkRODhic2U0mnS0slDYmzfGL59LQwzIX8DfixQkM IrmB0yDRstQ3FLUUVkEi9eRWlFaC+0IapqbxkWrGBb+5HUO6YabTJSCNvHcpElzHrCBX XqELryZKxHvHzkdaA3rwa0+QQCmNSUgaIinEB5meAlY0YyTsxuPF0dgZ+jUlN3nXvmxx dyFbQAteWvaStBaTgpoyS/1nCcGaBgCN4+ydXchSSU83ltJcTZvLQYEFBdhVLKD/2Fik Da8A== X-Gm-Message-State: AOAM530gj3JoxosdRmoGMMqdcy9/dMrdvmPRRpIg56L3cXKBV6x6Su4s e+nrxUQVbnsweTS6zRt3vil8Yw140Wrr6g== X-Google-Smtp-Source: ABdhPJwc4PYRPiTO09mroNlDgXFsHPDUMXg1gHYxceaFyWlrvXF5jn5/fK9IDuSADCgcHQOTT/4MZQ== X-Received: by 2002:a1c:a791:: with SMTP id q139mr336784wme.20.1615910338230; Tue, 16 Mar 2021 08:58:58 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58:57 -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 v3 23/32] tree-walk.h API: rename get_tree_entry() to get_tree_entry_mode() Date: Tue, 16 Mar 2021 16:58:20 +0100 Message-Id: <20210316155829.31242-24-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 254e15c8d0..ab03107958 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 83babc41d0..9e0543e13d 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 4858631e0f..4617388b29 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 79087bccea..070510d6a8 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 75c8b1acff..4790dda460 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 f3e192ca74..0faacd8f4a 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 df4b369902..bbbb68e15b 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 688d03ee9c..ef13860614 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 64202de60b..7e3b2d6d73 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 e88187e371..7819ff3e0e 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 478a659ee2..eb9b9de6cc 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 15:58:21 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: 12142705 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 5D73AC43333 for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4385364F5D for ; Tue, 16 Mar 2021 16:00:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238377AbhCPQAE (ORCPT ); Tue, 16 Mar 2021 12:00:04 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42626 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234381AbhCPP7B (ORCPT ); Tue, 16 Mar 2021 11:59:01 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D02EDC06175F for ; Tue, 16 Mar 2021 08:59:00 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id j2so10720045wrx.9 for ; Tue, 16 Mar 2021 08:59:00 -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=B3YtwXPRsxlzFMIP5ADyz13R8HvJZqtr2T92nsoYjgo=; b=GYxLH9wE8y7oFP6SuEsj9XdpUEs2gOobxbmoKQQj1nzh4jXoCZrHNs4BEXsnzFfzCZ ol/Bo2GCpILtCukQu2YzO6kuVqlv1uBcUD6n0ozZpX1P0ikLaUy5HMQJMOXuu18sXnWX ECWPm1jYpn0pt9NDwdKn25hoaqb9+QO7rvuYVIHme+r59Gr0cE2m+P5H0boXwnN3x++G 3A0Q35U2Eyq7gcNCPj9pTuOrKoVkIFPR3x/sWhCf0neRrE8dYe9w/YhSqonyiOpQEN4N YHfphtjLXXuWMI4ASJOGFNM4CNUpvRiKyFQxrFLiWC2TSABJqHlPVoV3LHH2h9yTN2mi xr4Q== 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=B3YtwXPRsxlzFMIP5ADyz13R8HvJZqtr2T92nsoYjgo=; b=lIw93imJYu0Rb1MiNG7Jv2QGDlRoaWCvu3AFNZ8+2kCEgHbiHFkCHdvHKN5B1acJ7C gSS0fLKIqIgPu4AbvDnA1gZttU1EMdVdxaxFZ8VY6oNBVHNjbKE/K1oIWK4qcD+k+JGh AvYEJOvtwnm+QyWauN1Ft1duS+MnFlrNj76IuLsELfxYbWEYgCAaZhCd6YwRmMINcqM5 H4hHfzH9Mt1RGld9OgdqkYnV1yqlPEhze4YLx4cGWYdelXn2VfPmH1UdhQ3jZJwDw8ql hnzeTDDLwpv9PgCHyWmn4IUlMdzOVxr7tB6Z1gIdmJSAQr5GSmZUuhcvUW6m1wc5w399 Z0cw== X-Gm-Message-State: AOAM533m5zyRXMbFawTl0DX2pmaG/twsQrZVAWR/ZI2s/iPSaNXKAyVj IZL8v3GbC2S7QIxngcbeQMX2Rb1nh9vs+Q== X-Google-Smtp-Source: ABdhPJxmVppugtnWU0BcTFmIw/dvh8t2iDN3282GyOYBGWhhDYWa6Bne+Euq5gVCY0n/rSuwVRKthw== X-Received: by 2002:adf:8b45:: with SMTP id v5mr3274078wra.398.1615910339285; Tue, 16 Mar 2021 08:58:59 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58:58 -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 v3 24/32] match-trees: use "tmp" for mode in shift_tree_by() Date: Tue, 16 Mar 2021 16:58:21 +0100 Message-Id: <20210316155829.31242-25-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 0faacd8f4a..e84f993a46 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 15:58:22 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: 12142707 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 7332AC433DB for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4B264650F8 for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238381AbhCPQAF (ORCPT ); Tue, 16 Mar 2021 12:00:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238271AbhCPP7C (ORCPT ); Tue, 16 Mar 2021 11:59:02 -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 AD40AC06174A for ; Tue, 16 Mar 2021 08:59:01 -0700 (PDT) Received: by mail-wm1-x32c.google.com with SMTP id g25so10369930wmh.0 for ; Tue, 16 Mar 2021 08:59:01 -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=jjzxl3RxJSQsYv0jvxv8PiBYNATc66pVSA573+0ipYw=; b=Dsd+/kV0ZVgrwxjTC2vATZaIO7z7K2jlGV4oKOlZEdAaU25VMZITdiHIH+ngnxrmmy vQQkJhjv5EqzjJf5y3QqgTuvEAkDZnh+bjdMCWrXja5TbebMMFe+RB46cBks2bRP1zSC ziYFWE21Z2061rgwY5FBt38IUC90qDVxQClAoUCBkWDNFsdMEZqIi/Dwf0SmGIpoSF/i 0FjTiGXtnFsVQwcb5mWj/dNkkF7g6VrmC6kjsGvkY528j6PwJuf7GGDa3sGxwxrqT9gt /ZITX7WBiw/laigtQd/tWVGlOCgQPPw62MBgcUksYEMdO3L4BreHNMmubbbTgcanTFcy c0VQ== 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=jjzxl3RxJSQsYv0jvxv8PiBYNATc66pVSA573+0ipYw=; b=NblEr7thx+i4KIQ2peAQKq1jMYtQvcQ/ZEtcF1D12ejF5VoN9aGkDObaGyeqpMLs6k jip0ZXLUzJ+oRP+3Dr35EDZnVbcQtMoMg8q0TOKkXa++YllHveQNI5VUaAndeXFB+PKH EnCL9bovQiCSSNAX1VnjAncWerHC2j91BdPODOwviCxeoJA71OlW2TWWSEBzxXYoWlnf UIKmikeNPjhSe/pyRRarc4Cm3iqbz8Cai6/TmOxlHw8vFLTXdBVvXv57GVMLRfYFr1Td jvQOuLouECVPEup7D1ooFcm/9YB98h2kbOk9Lw4o0GUfbuF1D9e+TCfvVEFRSEcXWEWi 3KLA== X-Gm-Message-State: AOAM531f+kmLJmoDvG6wzirkbDcUIAB49eUrLR1GqRPTnT8lCHH2co+f CZDgZuesHQLfV84TDILZ2Ic5BsF3cCg2sQ== X-Google-Smtp-Source: ABdhPJyY2nhKQdb45F6oRlDvHnisJEvvMokAcShX9W2szaMrWb5jTwzY3H6c0u+0OOnoLJX/Lk5UBw== X-Received: by 2002:a7b:cc0c:: with SMTP id f12mr283372wmh.137.1615910340115; Tue, 16 Mar 2021 08:59:00 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.58.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:58:59 -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 v3 25/32] tree-walk.h API: add get_tree_entry_type() Date: Tue, 16 Mar 2021 16:58:22 +0100 Message-Id: <20210316155829.31242-26-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 ab03107958..d6aef83b69 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 e84f993a46..3177558313 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 7819ff3e0e..46ce1ba806 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 eb9b9de6cc..f569960c6f 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 15:58:23 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: 12142709 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 BBBFAC433E6 for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8178B650FD for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238315AbhCPQAJ (ORCPT ); Tue, 16 Mar 2021 12:00:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42652 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238273AbhCPP7D (ORCPT ); Tue, 16 Mar 2021 11:59:03 -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 D2C2AC06174A for ; Tue, 16 Mar 2021 08:59:02 -0700 (PDT) Received: by mail-wm1-x32b.google.com with SMTP id m20-20020a7bcb940000b029010cab7e5a9fso1742340wmi.3 for ; Tue, 16 Mar 2021 08:59:02 -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=uuL5vFrDsrmofO5AuZuro3NY90A+CfLbL3gAFSAuuYo=; b=uTZcBrRJCssqJvMcKU8tvjDaMjQWY+OaPH141Br736MQk1zpQjlWsiDLHNdUX1sT26 oRNgxRdVdntiHphzPgi0ELuS1oQBxJfUPCiad9gJeaE+zasMbv8840zW8Be+Ci5hvS5u dnzJQ9Tza7ZezJtIs8jnlvAtVKAUcrPcXcojG0govzP+vRK1+KgjqRrsbDovPFZUj8DX kSrPQqYQ2z/aT+A5WooVuogih6ob/hOWh7o+VYYi81n3LxJRJtSKrWtBz9Y8axVj9WVr 1XbcOIq4fwnBEYjC3omR2KgcR0uczfeiQjWq6Cg/dFcLCuF2e/BrYHC/fONRUCHJ2/3T tWkw== 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=uuL5vFrDsrmofO5AuZuro3NY90A+CfLbL3gAFSAuuYo=; b=M//vbjXhVo1W4n3sYs7J87nY0/0LVGbFwROLJCWWMOyXVr3MEGyLK1lVCOjHmCRnYl yjwps8JpIPc29b1yKKmqIrXeN+LJRs1/g/iiC73ZoyyfVRUHCGeMEmLY2je5/v1g1XC3 akSTDyC+mBlUNvHiy/0/kyVMqzoRMwdaxkZkpBW53VkjxXou6kqFv2D5RxxuTzZnk3w/ 8j+2k2xpD5rBYDQS6e3XcisNM6wVvmoBfQTPDt0rEh64y3OLTIfjHoP9jmJLix7A/c/5 0LjnNebIbezvlj9G8pan0YOgM50vTzsiE7/s8vNN5uf4cG1Z9Li10qBTtGi9bNA9DwDm yrPA== X-Gm-Message-State: AOAM532eVHaWSCBSykY/Ta1T687IPYZtTz5RmGr/Ykmjk/8QT8iKUttg lmWeRfSg5JUv54IVEuZcZgtpGUZ7YJ/uGw== X-Google-Smtp-Source: ABdhPJwCMzAHxS+gnWPprevmlBVNMfFjhUkMFhlMvC3ElAE7MpAB9fBz5lXNHiZzN7jd8I4M/zhVJA== X-Received: by 2002:a05:600c:4f4f:: with SMTP id m15mr303893wmq.29.1615910341194; Tue, 16 Mar 2021 08:59:01 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.59.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:59:00 -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 v3 26/32] tree-walk.h API: document and format tree_entry_extract() Date: Tue, 16 Mar 2021 16:58:23 +0100 Message-Id: <20210316155829.31242-27-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 f569960c6f..f51485250f 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 15:58:24 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: 12142715 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 C626DC433E9 for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 938AB65101 for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238385AbhCPQAM (ORCPT ); Tue, 16 Mar 2021 12:00:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42660 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238276AbhCPP7E (ORCPT ); Tue, 16 Mar 2021 11:59:04 -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 A6EA0C06174A for ; Tue, 16 Mar 2021 08:59:03 -0700 (PDT) Received: by mail-wm1-x32a.google.com with SMTP id n11-20020a05600c4f8bb029010e5cf86347so4069472wmq.1 for ; Tue, 16 Mar 2021 08:59:03 -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=U5XIDHSD+13c2qHVPx6WWHeZIFpAoMOzQ1WKVVeV+6o=; b=QsEAt8Am+kWc5Hdul4GSbN4kz4BbPceTowul6k+gtKIpRrfXwe3+Uk6Msb/6hE1ePv sBPwKrPNAr+xq4xU5aIZVw07Y9DEcI4wuJcOhOn7pgByrooBJhP937UHRJnya4o4DL1A ACpaJgOKQ5tjf86ZCp+pTZvsOz/ql7p815KpgC8B3ndPdRXvQVrLCk2ADRDx8Eh4LUqK wNBbkb95nSD0I5eAke3SpE6RORMFAsSQFx9esEVtQM8jmnYiJJBXX8MAdr7nRoQTK/Rm ZSPDA5ACbEm4ZGwss5h/udMfOiE2a8FIguWgZ4qD+1LWE4q09Nutu5KIxdJxzVr/OWoq 09Fg== 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=U5XIDHSD+13c2qHVPx6WWHeZIFpAoMOzQ1WKVVeV+6o=; b=e6N8qx2rOj57ZT3XgVQz9Pqa0ffSg2BLWWYS6WE5KOrqZCNXt/E/c/IteayUBnE3Ah pWhdO148PkZoVXkhVau69BE64AUPsX0msfpx29Z+5Vfv/+S5KmFWA60Pre1AvDFpSNvw Njh3f8ez7CRCs+1yrMtmxeFwNWN9/t7PL3JtVu+gDFqDVspRZz2WE2B9iNb5+g8giw7n xNnOUoOienkkrLYj/Ljz+9Yy24c20K4mxfajPwab8xCV+JkHe1/OHezrgDsIOo/TjEGJ miTkhEB1PI4oQSns3XQCayB1puCouE5Ccs37AQq+373EWgZ3VcEsRxuECU3jWnyrj4bk KIKw== X-Gm-Message-State: AOAM533Qi33L0qXRg7Iqa15AMrsDpk7ZhHNDr6Z9hOBHBrCTOruBcAXx o7IexwU7m8AVHd8c6rzqEtjPpiBx75laFQ== X-Google-Smtp-Source: ABdhPJw+2iZ0ZUcOg7GkxuusmDn+FdGJvZjAEEsj1qB1qsG6NCdD1K+2m73j2LDSjRfhbJHZJ+AgoA== X-Received: by 2002:a1c:3c02:: with SMTP id j2mr323279wma.92.1615910342113; Tue, 16 Mar 2021 08:59:02 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.59.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:59:01 -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 v3 27/32] tree-entry.h API: rename tree_entry_extract() to tree_entry_extract_mode() Date: Tue, 16 Mar 2021 16:58:24 +0100 Message-Id: <20210316155829.31242-28-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 7c74c49d32..11678ba582 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 3177558313..2afa496810 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 088ed52d6a..65c7e4dbc8 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 f51485250f..805cda649e 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 15:58:25 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: 12142713 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 D2F2EC433E0 for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A9E2164F5D for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238320AbhCPQAO (ORCPT ); Tue, 16 Mar 2021 12:00:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42662 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238277AbhCPP7E (ORCPT ); Tue, 16 Mar 2021 11:59:04 -0400 Received: from mail-wr1-x42d.google.com (mail-wr1-x42d.google.com [IPv6:2a00:1450:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6105CC061756 for ; Tue, 16 Mar 2021 08:59:04 -0700 (PDT) Received: by mail-wr1-x42d.google.com with SMTP id e18so7705750wrt.6 for ; Tue, 16 Mar 2021 08:59:04 -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=Nzekj2+svQp9OGjkX39xX5xq4K1LSlKg4BAO9ZN3Rq8=; b=Z5yY2foNBERbxTKKKFZnvJENUdh6ACAkLaO8xo99vcgaqBIUfiKs+poJ5TfUUtqLOx VG1tfoIYVpEpNf+/ZJG58MLYMgWWq6Ll2AMhbBigb+dTZGCTO4oUP6y6MaXMX5DzTjnu r5wSvDAPNCc1+3Mxbc0QHD31cHICxx5IqOZGD6SPaIKPsplus5pRYXkrxazgrIYrSvYl bamJwJ26NyYTixtCky9FOcMHfmUdqXtqa+hjlEQJxJ/mJsDpPLpOrMVwjc/KVzhxL2em E+zKfjsGFwBtXVwpuXDmSQpwTk8hOkOb6ihltCYC2dpz/yiFTF4zEC2s5cbT4DJD9KOg lp9A== 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=Nzekj2+svQp9OGjkX39xX5xq4K1LSlKg4BAO9ZN3Rq8=; b=Acmgxexd3MYoFt/woGT65DBzA5T5IzJ+1jT2xKakJn11PXsEBpqF2TOptzsJhE3Saa l5b3cV6Dy44YKVTERN1aDZu8e4kgi8wE9DAQPLJhIwv8PotXvK/3skwqxaRnPYsbOxQT rQZ5xtE5QH70RhKG65FE5Puxtqc/fJgOw+kkwZd3LNBYcYS+4x7271hBhpvRWmDAQuZh spZZBefV9oFVIFGAWOox8ko6Mmd2NrzuKAVYhVT25j8BZ6zTlNgD9J3l1nLEphX/Yhji rhweOHukzYRvCElyUjWnNblfX3vk3Fz3585mgcQozammuyd6A/zlk0HZr0nJcDOZE8+e r0Gg== X-Gm-Message-State: AOAM530poqPjeEpPSiP94evVOoffbx+vW+oHlrJMQu5uwkxYI8EBOYqB J5rBpp3Fh2xZkQv3sTthbLabXxzXL77iBg== X-Google-Smtp-Source: ABdhPJw1Y2YdIJR3jGFcNGlF9hCyhtuIs98/PKj57paQV2RQOEFT9mMjNPJaRBM7xyaEb6Yo3ZfQ4A== X-Received: by 2002:adf:f150:: with SMTP id y16mr5686655wro.414.1615910342898; Tue, 16 Mar 2021 08:59:02 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.59.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:59:02 -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 v3 28/32] tree-walk.h API: add a tree_entry_extract_all() function Date: Tue, 16 Mar 2021 16:58:25 +0100 Message-Id: <20210316155829.31242-29-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 65c7e4dbc8..918ad95fa6 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 46ce1ba806..f4473276c9 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 805cda649e..a4c5487174 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 15:58:26 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: 12142711 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 EA1D8C43381 for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BA691650FF for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238309AbhCPQAP (ORCPT ); Tue, 16 Mar 2021 12:00:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42670 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238279AbhCPP7F (ORCPT ); Tue, 16 Mar 2021 11:59:05 -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 3C75AC06174A for ; Tue, 16 Mar 2021 08:59:05 -0700 (PDT) Received: by mail-wr1-x433.google.com with SMTP id l12so10749317wry.2 for ; Tue, 16 Mar 2021 08:59:05 -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=ihb+3rn+3oaRK01exj2s3LbU08etq3Y9pyDTOVeTwcw=; b=brJAK6w5s37IUcbOoU20a/HHbvbV4LxHIhmzQkyOljJEf+BuAJ4S5jX/+dwJGmimcn Z85F8KKLWLTobW4ZA5BQYwTNax8Nn3Jyo4Ewl7toRb37/Lg98GQ9ZtXoqrC6JY1QsN+H sCfI4b06P09iZPW8/nfUd7NTc/+MesMyfnnR1rT7Imh+DeBpasttXknPGdalYvzCYLlm eVM4xQD21gHNF8Q29/vaHP/5w8BP+sg/2LEwsBWMvFYhwU+Z2gq5K0CWT3+nP+G1N09R 07LhngbfuRND8aF8ZhQPGeHxCCoYt15xV9vPKf1JyQl2IogtJquBvFASwvf1mwscyT9M 4smg== 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=ihb+3rn+3oaRK01exj2s3LbU08etq3Y9pyDTOVeTwcw=; b=hVH7zKbz4qNX+holGNxorW7BToyyZQZirkunQR10eKFiODFPaD73KdMCIXyTGx7hz6 2dNBleI2fbzG51LiJbWDURPIsFpr3h8FBaygJ4RU94xSkulD3XwPbvhzy9v0qLsHhBIP AzR08tQ0+OgX8AKbRQsI0akGnBN5H0O1DoqwDGiHgREq6NO/wJ/Md748oskqwVIceSR7 cTqM0/0GMQWevsasZMOOKZdReGJhSEUXyvxDsbkmWdCx3M1AygtRZ2o0LotXoB4brFh3 OvYpjTeLtX0LbBsjuSPms9J4LnqbOy3KAErkvo8p23NEpVOna8UGKIiYAyabS41dlIWN yXTw== X-Gm-Message-State: AOAM533bv+2cWk2dRkyoJYoUpweHSkuHM30ohhhaPUPIzIJm7QkQJa6q x6DUJMmeDW1Jemp3xoaAm6R9t9Ounz7/PQ== X-Google-Smtp-Source: ABdhPJz9+/baeAaegqfjwTVa9KoH+wxx/3X1Yyrtp1GDdCVzwX53JJD0RmCEZCzdKs6RhAXOfnw66A== X-Received: by 2002:adf:a3c2:: with SMTP id m2mr5695305wrb.195.1615910343697; Tue, 16 Mar 2021 08:59:03 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.59.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:59:03 -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 v3 29/32] tree-walk.h API: add get_tree_entry_all() Date: Tue, 16 Mar 2021 16:58:26 +0100 Message-Id: <20210316155829.31242-30-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 070510d6a8..b489a87639 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 f4473276c9..a90dbf87af 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 a4c5487174..55ef88ef2e 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 15:58:27 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: 12142719 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 25D00C4332B for ; Tue, 16 Mar 2021 16:00:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E535765109 for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238403AbhCPQAX (ORCPT ); Tue, 16 Mar 2021 12:00:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42674 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238281AbhCPP7H (ORCPT ); Tue, 16 Mar 2021 11:59:07 -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 2F2C3C061756 for ; Tue, 16 Mar 2021 08:59:06 -0700 (PDT) Received: by mail-wm1-x333.google.com with SMTP id d191so10369652wmd.2 for ; Tue, 16 Mar 2021 08:59:06 -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=ZG/VlqGbz5+le+vTqnCGnFIR4JNUfSxnY3hhLIzrwdU=; b=J1O3l9hOb6eDPGps0OvBoiuyQfBwIExJPPLL0KBIIlAIe3XAV/fXjslCaPl6uUNlXa N2dMe7927oNlf0p0zgwwBWBb2urFZyaHss3hqPcogfvkX5rmsfgR4p+u4EBdd3HDdz2v 0iVLw32noQACZvE/RjGVuuh34VzHtoUsqJLvmCgAsP7jJzNEpFtPDu7HqwJ9Kqc78dYN B5s6NerZqrkUsiatFUU2kvbe/9wfk60K8ee8IjavZiLesVWCY3aiOfecx8GP9MhH0AWv pMWGswfRjiIllsqOJT57bdpUKv2SmjJV97YhlRdSD7WVBv3p4DFIvl8FqMcMHU0I5Yis XeCQ== 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=ZG/VlqGbz5+le+vTqnCGnFIR4JNUfSxnY3hhLIzrwdU=; b=SEjc917BVVB49odRGdayDVqNZXOmujjf4ab6vhBtEHrPiAO7TWEb7vXsE9LFhSXdNH codCZQ3bhCBVf08L+z3Lj6w2LGywxO1ilmZBDDk4PDmmZxieUbXMKnOSgsj0iK6pDwIh yLTyQ4+CXJ7DWVvQJT2zbegeUbL3z+INo0776ALeoslFTFM16xHPrwKhtJxOE1wPs1ku pORB3zzPB5tE7Plq1Mx9SRL1E/J1vH4duuisujQE6czJNUmzLaKVXPKKitniopgY1IKU 34/WbNzOjCemTKSdvoutiku4vkbZ8eratfuzUmo7usO833viNML6BMhEUGoJxFxdxqjs LCKw== X-Gm-Message-State: AOAM533i4MgeKyGW0idJ6xWRCvBuFH4QWpJqMqaFwfgT5o0ZoMz72o/q iTVF5NPwikVkKCQkN//F6ow1nOau0HnymA== X-Google-Smtp-Source: ABdhPJx9DtJzsMIVqThH9v5H7wSQ+molX5JZXF5n0go0Do2OVbjahamkK6jbQwaoiV4NsQLlYAVboQ== X-Received: by 2002:a7b:c151:: with SMTP id z17mr278713wmi.189.1615910344602; Tue, 16 Mar 2021 08:59:04 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.59.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:59:03 -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 v3 30/32] tree-walk.h API: add a get_tree_entry_path() function Date: Tue, 16 Mar 2021 16:58:27 +0100 Message-Id: <20210316155829.31242-31-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 are callers here which don't need the "struct object_id" filled; forcing callers to pass one just requires they create a throwaway variable. See the following commits for the introduction of such code that's being modified here: - shift_tree(): 68faf68938e (A new merge stragety[sic] '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 2afa496810..25bfb46fb0 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 bbbb68e15b..83d2b8b844 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 ef13860614..aa46cb2b09 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 7e3b2d6d73..9ff5f83c1f 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 a90dbf87af..fa846535df 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 55ef88ef2e..efcd7ccd10 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 15:58:28 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: 12142717 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 14A00C4332D for ; Tue, 16 Mar 2021 16:00:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CC8E46510C for ; Tue, 16 Mar 2021 16:00:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238396AbhCPQAV (ORCPT ); Tue, 16 Mar 2021 12:00:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42682 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238207AbhCPP7I (ORCPT ); Tue, 16 Mar 2021 11:59:08 -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 E0F8CC06175F for ; Tue, 16 Mar 2021 08:59:06 -0700 (PDT) Received: by mail-wm1-x329.google.com with SMTP id r10-20020a05600c35cab029010c946c95easo1758162wmq.4 for ; Tue, 16 Mar 2021 08:59:06 -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=QO7Nw6hn0oXyq6j/dhhKBZG7mNHUkHMclnG26PsWXqM=; b=GKoCMFzwNSej1RsQoRiabbcahEv8XpnBpqb4fut35MqI6oA7gXa3K0Lsy0fGpojAKb ojL2pkslkSmXKzGKX+cIs9m/HvWv40xSauVnv4fc06TIF4yM+87Xbn2xjm+CXbCwLglO gqG6XFrOSa0SFkKselUfxOz9tQGy+Blc1OjdL1x/Ts3+Wu74pUVbV+5wlzq789dXgHsX uJfjzjed8juVnwH/tIr+rBCVMHl+67xXjP1C46+oia2VThFk29o9Bm/xtnU8JgQpXPHd GmB/I9EBiIrCEHsn5ptrkBX1i75qUVC580CUINbjHdvGTea0ipUYBqRp/6Hf33RfV7T9 Ut0w== 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=QO7Nw6hn0oXyq6j/dhhKBZG7mNHUkHMclnG26PsWXqM=; b=qzJ//CVZVzJQfajQvfzMWR2r4jrj7N0KQqJwef2/LprG5yBmaFUVu2yvWdTVr4kMVp TylwxHbSycEKB0hytm5Qv4RtWzLsCHh1e4Gx4Igrph3ujHgMbanavHZOdUZ5aYRyNClm zjhL2p3TU37ZeE8Z1UtHxYz4umNByHWNyQobDr1Iq4IqjoeEvoc1oGGryMT5+J0oVMqe g1Sw0ClFiyi9kwoObytovfG/YV8mwquoOI1oVa9AVoGnQLXQR0xVIO92BVsyvx7zetR8 eux5S3+UO6BD26ZvfQhJpOqWCLssOp76uCoCLpok834kTEvICb57BvAFuxbJh7Qjnmoq awpA== X-Gm-Message-State: AOAM5312PMGUCUdePh16iYhteVtIK0Hs3qd6hSQ9zTdlk/yaCkaC3qNA 1Fi9kHvCxCNLsZlVLk8aaApWo7yUAcjDzw== X-Google-Smtp-Source: ABdhPJyFVp5Oe6r9uINFHBG9Oy3da8iKIdnlxDY5Ct07p01Zt4pMXUWfqcaIgi2tVHdRkFJnivRzuQ== X-Received: by 2002:a1c:7406:: with SMTP id p6mr283614wmc.103.1615910345402; Tue, 16 Mar 2021 08:59:05 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.59.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:59:04 -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 v3 31/32] blame: emit a better error on 'git blame directory' Date: Tue, 16 Mar 2021 16:58:28 +0100 Message-Id: <20210316155829.31242-32-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 The main point of this test is to assert that we're not doing something uniquely bad when in a conflicted merge. See cd8ae20195 (git-blame shouldn't crash if run in an unmerged tree, 2007-10-18) and 9aeaab6811 (blame: allow "blame file" in the middle of a conflicted merge, 2012-09-11) for the bug the t8004 test was originally meant to address. But when extending it let's grep out the specific error message for good measure. Having to change it in the future (e.g. as part of my parallel series to improve such 'OID does not match type' messages) is a small price for ensuring it doesn't regress. Signed-off-by: Ævar Arnfjörð Bjarmason --- blame.c | 8 ++------ t/t8004-blame-with-conflicts.sh | 21 +++++++++++++++++++++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/blame.c b/blame.c index 9e0543e13d..7da162cd58 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 35414a5336..5e3dea35a5 100755 --- a/t/t8004-blame-with-conflicts.sh +++ b/t/t8004-blame-with-conflicts.sh @@ -73,4 +73,25 @@ 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 && + grep "unsupported file type d" 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 15:58:29 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: 12142721 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 405D7C4332E for ; Tue, 16 Mar 2021 16:00:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 2569665101 for ; Tue, 16 Mar 2021 16:00:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238417AbhCPQAZ (ORCPT ); Tue, 16 Mar 2021 12:00:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42688 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S236842AbhCPP7J (ORCPT ); Tue, 16 Mar 2021 11:59:09 -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 6A1C8C061764 for ; Tue, 16 Mar 2021 08:59:07 -0700 (PDT) Received: by mail-wm1-x331.google.com with SMTP id c76-20020a1c9a4f0000b029010c94499aedso1780243wme.0 for ; Tue, 16 Mar 2021 08:59:07 -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=eeEFiBh5xL1C6rQuAtyHEhaYP3o7rbvIu1GaZvOlh5M=; b=tS1Ufu9pk/mtES8qOVdDNAdvra8l1rjDy/4+REYRIQzsrOBp7wXIM/kv6u987YhFSN DeE+1jC3h+kDvVbAlBKIMnQLyZwuzksI7eRgAPvF4qVFZCITayOLBDeFVo6Uo367J57C 6VeDsqAZfDY+ByPR0rw/nWDmkXxAhlCaZ1UdqCdMuE3bxMURSXGkK6tlb67cBhVj7HO2 0MqxNHuQZKPJwdhsm+UKYXCH7AYUHC8QeYyDCefeiTAnJJh5sc94kL0815Kx77RNgIAj SmvAmp6mnqKcvF/wr+rMQbYmXdtEM4sdPSG2v1PQnJuvuEH9N05cACTzP2nJMo1pjLVO TiXA== 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=eeEFiBh5xL1C6rQuAtyHEhaYP3o7rbvIu1GaZvOlh5M=; b=j0x01ad3ml6xblP4nLaEifofsDTwGcFwghnFazLrjEjtnaj+XAtOtQCa7DDieQwdpQ HGa9zSfG4J9dm1lFryaippPdWQ82tqpvUvNV1eiuKYfRxD14FnaOaqfHLkjlwTe0CdjF 1SiKJwxZeq9GUMX+nk5lzjQsfwKTutHSQBIcnq9nFlV/PAoTqMQqQn738Tb2U5uK8yGq OUpLe46yjacpJZLoj9bOMqgvq0myNGKrXEDvKY4XKf1K6VahqAQwpzcqGN7N/Kw6ftZp qRhfd7OU8dsnxfV4em6Nbg7PyCzjfoPSxkzfZt0+gX4Ty5wXqYM/DvtEsxZfF8sdar2I Ehtg== X-Gm-Message-State: AOAM5308nIHlR8zWrySj3e3VRrl9pzovbb1nZxVAk4Fw1ZgkKxrLBXjl DXHEv3hXVXgISx11ldTHqhzeC5wqjd/now== X-Google-Smtp-Source: ABdhPJyffIP+3z25+Lz/jw0czLkqBQ1V5NBgtBQU30pIacKttZkhTOMvm+TTviCBnFM9ApDe2SYcVw== X-Received: by 2002:a05:600c:2204:: with SMTP id z4mr313192wml.31.1615910346267; Tue, 16 Mar 2021 08:59:06 -0700 (PDT) Received: from vm.nix.is (vm.nix.is. [2a01:4f8:120:2468::2]) by smtp.gmail.com with ESMTPSA id m132sm3439060wmf.45.2021.03.16.08.59.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Mar 2021 08:59:05 -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 v3 32/32] tree-walk.h API: add a tree_entry_extract_type() function Date: Tue, 16 Mar 2021 16:58:29 +0100 Message-Id: <20210316155829.31242-33-avarab@gmail.com> X-Mailer: git-send-email 2.31.0.256.gf0ddda3145 In-Reply-To: <20210316021312.13927-1-avarab@gmail.com> References: <20210316021312.13927-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 25bfb46fb0..89109659aa 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 918ad95fa6..8409374f0b 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 efcd7ccd10..f5102ed542 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,