git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2] refs: use skip_prefix() in ref_is_hidden()

From
Christian Couder <christian.couder@gmail.com>
Date
Jul 22, 2017, 04:39 UTC
Message-ID
<20170722043912.32118-1-chriscool@tuxfamily.org>

This is shorter, makes the logic a bit easier to follow, and is perhaps a bit faster too.

The logic is to make the final decision only when "subject" is there, its early part matches "match", and the match is at the slash boundary (or the whole thing).

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
The change with the previous version was suggested by Junio in
https://public-inbox.org/git/xmqqk231hgpz.fsf@gitster.mtv.corp.google.com/
 refs.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/refs.c b/refs.c
index ba22f4acef..ea2b9f84f8 100644
--- a/refs.c
+++ b/refs.c
@@ -1160,7 +1160,7 @@ int ref_is_hidden(const char *refname, const char *refname_full)
 		const char *match = hide_refs->items[i].string;
 		const char *subject;
 		int neg = 0;
-		int len;
+		const char *p;
 
 		if (*match == '!') {
 			neg = 1;
@@ -1175,10 +1175,9 @@ int ref_is_hidden(const char *refname, const char *refname_full)
 		}
 
 		/* refname can be NULL when namespaces are used. */
-		if (!subject || !starts_with(subject, match))
-			continue;
-		len = strlen(match);
-		if (!subject[len] || subject[len] == '/')
+		if (subject &&
+		    skip_prefix(subject, match, &p) &&
+		    (!*p || *p == '/'))
 			return !neg;
 	}
 	return 0;
-- 
2.14.0.rc0.26.g981adb928e.dirty
Next: Jeff King
Message 1 of 2 in “refs: use skip_prefix() in ref_is_hidden()”
  1. refs: use skip_prefix() in ref_is_hidden()Christian Couder, Jul 22, 2017
  2. Jeff KingJul 24, 2017

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.