All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] show-ref: allow glob-style ref matching
@ 2007-01-26  9:50 Matthias Lederhofer
  0 siblings, 0 replies; only message in thread
From: Matthias Lederhofer @ 2007-01-26  9:50 UTC (permalink / raw)
  To: git

show-ref without --verify will try to match pattern with
fnmatch against the full refname and every suffix starting
at a / in refname
---
I've been using ls .git/refs/tags/v1.4.* and other glob patterns to
take a look at refs.  This allows to use such patterns with show-ref.
If this patch is accepted I'll add the missing documentation.
---
 builtin-show-ref.c |   21 ++++++++++-----------
 1 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/builtin-show-ref.c b/builtin-show-ref.c
index 853f13f..64a1246 100644
--- a/builtin-show-ref.c
+++ b/builtin-show-ref.c
@@ -34,21 +34,20 @@ static int show_ref(const char *refname, const unsigned char *sha1, int flag, vo
 			return 0;
 	}
 	if (pattern) {
-		int reflen = strlen(refname);
 		const char **p = pattern, *m;
 		while ((m = *p++) != NULL) {
-			int len = strlen(m);
-			if (len > reflen)
-				continue;
-			if (memcmp(m, refname + reflen - len, len))
-				continue;
-			if (len == reflen)
-				goto match;
+			const char *r = refname;
 			/* "--verify" requires an exact match */
-			if (verify)
+			if (verify) {
+				if (strcmp(m, refname))
+					goto match;
 				continue;
-			if (refname[reflen - len - 1] == '/')
-				goto match;
+			}
+			do {
+				if (!fnmatch(m, r, 0))
+					goto match;
+				r = index(r, '/');
+			} while (r++);
 		}
 		return 0;
 	}
-- 
1.5.0.rc2.g18af

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2007-01-26  9:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-01-26  9:50 [PATCH] show-ref: allow glob-style ref matching Matthias Lederhofer

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.