From: "Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com>
To: git@vger.kernel.org
Cc: gitster@pobox.com, me@ttaylorr.com, vdye@github.com,
steadmon@google.com, "Ævar Arnfjörð Bjarmason" <avarab@gmail.com>,
"Jeff King" <peff@peff.net>,
"Eric Sunshine" <sunshine@sunshineco.com>,
"Derrick Stolee" <derrickstolee@github.com>,
"Derrick Stolee" <derrickstolee@github.com>
Subject: [PATCH v3 06/11] log-tree: use ref_namespaces instead of if/else-if
Date: Fri, 05 Aug 2022 17:58:38 +0000 [thread overview]
Message-ID: <063e5bac2ce0bbe08ce71ba5012c4f7c447e0d4e.1659722324.git.gitgitgadget@gmail.com> (raw)
In-Reply-To: <pull.1301.v3.git.1659722323.gitgitgadget@gmail.com>
From: Derrick Stolee <derrickstolee@github.com>
The add_ref_decoration() method uses an if/else-if chain to determine if
a ref matches a known ref namespace that has a special decoration
category. That decoration type is later used to assign a color when
writing to stdout.
The newly-added ref_namespaces array contains all namespaces, along
with information about their decoration type. Check this array instead
of this if/else-if chain. This reduces our dependency on string literals
being embedded in the decoration logic.
Signed-off-by: Derrick Stolee <derrickstolee@github.com>
---
log-tree.c | 26 ++++++++++++++++----------
1 file changed, 16 insertions(+), 10 deletions(-)
diff --git a/log-tree.c b/log-tree.c
index 1b2c76c5bb9..bb6cbceee63 100644
--- a/log-tree.c
+++ b/log-tree.c
@@ -137,6 +137,7 @@ static int ref_filter_match(const char *refname,
static int add_ref_decoration(const char *refname, const struct object_id *oid,
int flags, void *cb_data)
{
+ int i;
struct object *obj;
enum object_type objtype;
enum decoration_type deco_type = DECORATION_NONE;
@@ -166,16 +167,21 @@ static int add_ref_decoration(const char *refname, const struct object_id *oid,
return 0;
obj = lookup_object_by_type(the_repository, oid, objtype);
- if (starts_with(refname, "refs/heads/"))
- deco_type = DECORATION_REF_LOCAL;
- else if (starts_with(refname, "refs/remotes/"))
- deco_type = DECORATION_REF_REMOTE;
- else if (starts_with(refname, "refs/tags/"))
- deco_type = DECORATION_REF_TAG;
- else if (!strcmp(refname, "refs/stash"))
- deco_type = DECORATION_REF_STASH;
- else if (!strcmp(refname, "HEAD"))
- deco_type = DECORATION_REF_HEAD;
+ for (i = 0; i < ARRAY_SIZE(ref_namespace); i++) {
+ struct ref_namespace_info *info = &ref_namespace[i];
+
+ if (!info->decoration)
+ continue;
+ if (info->exact) {
+ if (!strcmp(refname, info->ref)) {
+ deco_type = info->decoration;
+ break;
+ }
+ } else if (starts_with(refname, info->ref)) {
+ deco_type = info->decoration;
+ break;
+ }
+ }
add_name_decoration(deco_type, refname, obj);
while (obj->type == OBJ_TAG) {
--
gitgitgadget
next prev parent reply other threads:[~2022-08-05 17:59 UTC|newest]
Thread overview: 79+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-26 14:04 [PATCH 0/3] log: create tighter default decoration filter Derrick Stolee via GitGitGadget
2022-07-26 14:04 ` [PATCH 1/3] refs: allow "HEAD" as " Derrick Stolee via GitGitGadget
2022-07-26 15:10 ` Ævar Arnfjörð Bjarmason
2022-07-29 13:23 ` Derrick Stolee
2022-07-26 14:04 ` [PATCH 2/3] log: add default " Derrick Stolee via GitGitGadget
2022-07-26 14:39 ` Ævar Arnfjörð Bjarmason
2022-07-29 13:25 ` Derrick Stolee
2022-07-26 15:04 ` Ævar Arnfjörð Bjarmason
2022-07-27 14:50 ` Junio C Hamano
2022-07-27 19:07 ` Derrick Stolee
2022-07-27 19:38 ` Junio C Hamano
2022-07-29 20:32 ` Jeff King
2022-07-26 14:04 ` [PATCH 3/3] maintenance: stop writing log.excludeDecoration Derrick Stolee via GitGitGadget
2022-07-27 14:50 ` Junio C Hamano
2022-07-26 14:44 ` [PATCH 0/3] log: create tighter default decoration filter Ævar Arnfjörð Bjarmason
2022-07-26 16:38 ` Derrick Stolee
2022-07-26 18:19 ` Ævar Arnfjörð Bjarmason
2022-07-27 13:41 ` Derrick Stolee
2022-07-27 20:40 ` Ævar Arnfjörð Bjarmason
2022-07-29 19:29 ` [PATCH v2 00/10] " Derrick Stolee via GitGitGadget
2022-07-29 19:29 ` [PATCH v2 01/10] refs: allow "HEAD" as " Derrick Stolee via GitGitGadget
2022-08-03 6:03 ` Junio C Hamano
2022-08-04 13:22 ` Derrick Stolee
2022-07-29 19:29 ` [PATCH v2 02/10] t4207: test coloring of grafted decorations Derrick Stolee via GitGitGadget
2022-08-03 6:25 ` Ævar Arnfjörð Bjarmason
2022-08-03 6:44 ` Eric Sunshine
2022-08-03 13:03 ` Ævar Arnfjörð Bjarmason
2022-08-04 4:05 ` Eric Sunshine
2022-08-04 17:23 ` Junio C Hamano
2022-08-05 14:21 ` Derrick Stolee
2022-07-29 19:29 ` [PATCH v2 03/10] refs: add array of ref namespaces Derrick Stolee via GitGitGadget
2022-08-03 6:16 ` Junio C Hamano
2022-08-04 13:29 ` Derrick Stolee
2022-08-04 16:16 ` Junio C Hamano
2022-08-03 22:39 ` Josh Steadmon
2022-08-04 13:29 ` Derrick Stolee
2022-07-29 19:29 ` [PATCH v2 04/10] refs: use ref_namespaces for replace refs base Derrick Stolee via GitGitGadget
2022-08-03 22:38 ` Josh Steadmon
2022-08-04 13:30 ` Derrick Stolee
2022-07-29 19:29 ` [PATCH v2 05/10] log-tree: use ref_namespaces instead of if/else-if Derrick Stolee via GitGitGadget
2022-08-03 6:31 ` Junio C Hamano
2022-08-04 13:31 ` Derrick Stolee
2022-08-04 14:34 ` Derrick Stolee
2022-08-04 14:50 ` Derrick Stolee
2022-08-04 17:40 ` Junio C Hamano
2022-08-04 20:17 ` Derrick Stolee
2022-07-29 19:29 ` [PATCH v2 06/10] log: add default decoration filter Derrick Stolee via GitGitGadget
2022-08-04 7:08 ` Ævar Arnfjörð Bjarmason
2022-08-05 14:27 ` Derrick Stolee
2022-08-05 14:50 ` Ævar Arnfjörð Bjarmason
2022-08-05 15:09 ` Derrick Stolee
2022-08-11 19:30 ` Ævar Arnfjörð Bjarmason
2022-08-12 19:37 ` Derrick Stolee
2022-07-29 19:29 ` [PATCH v2 07/10] log: add --decorate-all option Derrick Stolee via GitGitGadget
2022-08-04 16:57 ` Junio C Hamano
2022-07-29 19:29 ` [PATCH v2 08/10] log: create log.decorateFilter=all Derrick Stolee via GitGitGadget
2022-08-03 22:42 ` Josh Steadmon
2022-08-04 13:38 ` Derrick Stolee
2022-07-29 19:29 ` [PATCH v2 09/10] maintenance: stop writing log.excludeDecoration Derrick Stolee via GitGitGadget
2022-08-03 6:36 ` Junio C Hamano
2022-07-29 19:29 ` [PATCH v2 10/10] fetch: use ref_namespaces during prefetch Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` [PATCH v3 00/11] log: create tighter default decoration filter Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` [PATCH v3 01/11] refs: allow "HEAD" as " Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` [PATCH v3 02/11] t4207: modernize test Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` [PATCH v3 03/11] t4207: test coloring of grafted decorations Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` [PATCH v3 04/11] refs: add array of ref namespaces Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` [PATCH v3 05/11] refs: use ref_namespaces for replace refs base Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` Derrick Stolee via GitGitGadget [this message]
2022-08-05 17:58 ` [PATCH v3 07/11] log: add default decoration filter Derrick Stolee via GitGitGadget
2022-09-08 21:13 ` Glen Choo
2022-09-09 12:23 ` Derrick Stolee
2022-09-09 16:19 ` Junio C Hamano
2022-09-09 16:40 ` Derrick Stolee
2022-09-09 17:41 ` Junio C Hamano
2022-09-09 17:12 ` Glen Choo
2022-08-05 17:58 ` [PATCH v3 08/11] log: add --clear-decorations option Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` [PATCH v3 09/11] log: create log.initialDecorationSet=all Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` [PATCH v3 10/11] maintenance: stop writing log.excludeDecoration Derrick Stolee via GitGitGadget
2022-08-05 17:58 ` [PATCH v3 11/11] fetch: use ref_namespaces during prefetch Derrick Stolee via GitGitGadget
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=063e5bac2ce0bbe08ce71ba5012c4f7c447e0d4e.1659722324.git.gitgitgadget@gmail.com \
--to=gitgitgadget@gmail.com \
--cc=avarab@gmail.com \
--cc=derrickstolee@github.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=me@ttaylorr.com \
--cc=peff@peff.net \
--cc=steadmon@google.com \
--cc=sunshine@sunshineco.com \
--cc=vdye@github.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.