From: Junio C Hamano <gitster@pobox.com>
Date: Tue, 10 May 2011 17:23:41 +0000 (-0700)
Subject: Revert "magic pathspec: add ":(icase)path" to match case insensitively"
X-Git-Tag: v1.7.6-rc0~44^2~10
X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=6d9429271013898df103f7e77ed0736cdfab01b8;p=git.git

Revert "magic pathspec: add ":(icase)path" to match case insensitively"

This reverts commit d0546e2d488b1ba185c430b638619ab1d91af509, which
was only meant to be a Proof-of-concept used during the discussion.

The real implementation of the feature needs to wait until we migrate
all the code to use "struct pathspec", not "char **", to represent
richer semantics given to pathspec.
---

diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
index 0ca029b73..e51d7e60e 100644
--- a/Documentation/glossary-content.txt
+++ b/Documentation/glossary-content.txt
@@ -319,13 +319,10 @@ top `/`;;
 	The magic word `top` (mnemonic: `/`) makes the pattern match
 	from the root of the working tree, even when you are running
 	the command from inside a subdirectory.
-icase;;
-	The magic word `icase` (there is no mnemonic for it) makes the
-	pattern match case insensitively.  E.g. `:(icase)makefile` matches
-	both `Makefile` and `makefile`.
 --
 +
-It is envisioned that we will support more types of magic in later
+Currently only the slash `/` is recognized as the "magic signature",
+but it is envisioned that we will support more types of magic in later
 versions of git.
 
 [[def_parent]]parent::
diff --git a/setup.c b/setup.c
index 51e354ca0..5048252d7 100644
--- a/setup.c
+++ b/setup.c
@@ -136,12 +136,12 @@ void verify_non_filename(const char *prefix, const char *arg)
  * Possible future magic semantics include stuff like:
  *
  *	{ PATHSPEC_NOGLOB, '!', "noglob" },
+ *	{ PATHSPEC_ICASE, '\0', "icase" },
  *	{ PATHSPEC_RECURSIVE, '*', "recursive" },
  *	{ PATHSPEC_REGEXP, '\0', "regexp" },
  *
  */
 #define PATHSPEC_FROMTOP    (1<<0)
-#define PATHSPEC_ICASE      (1<<1)
 
 struct pathspec_magic {
 	unsigned bit;
@@ -149,7 +149,6 @@ struct pathspec_magic {
 	const char *name;
 } pathspec_magic[] = {
 	{ PATHSPEC_FROMTOP, '/', "top" },
-	{ PATHSPEC_ICASE, '\0', "icase" },
 };
 
 /*
@@ -169,8 +168,7 @@ const char *prefix_pathspec(const char *prefix, int prefixlen, const char *elt)
 {
 	unsigned magic = 0;
 	const char *copyfrom = elt;
-	const char *retval;
-	int i, free_source = 0;
+	int i;
 
 	if (elt[0] != ':') {
 		; /* nothing to do */
@@ -224,31 +222,10 @@ const char *prefix_pathspec(const char *prefix, int prefixlen, const char *elt)
 			copyfrom++;
 	}
 
-	if (magic & PATHSPEC_ICASE) {
-		struct strbuf sb = STRBUF_INIT;
-		for (i = 0; copyfrom[i]; i++) {
-			int ch = copyfrom[i];
-			if (('a' <= ch && ch <= 'z') ||
-			    ('A' <= ch && ch <= 'Z')) {
-				strbuf_addf(&sb, "[%c%c]",
-					    tolower(ch), toupper(ch));
-			} else {
-				strbuf_addch(&sb, ch);
-			}
-		}
-		if (sb.len) {
-			free_source = 1;
-			copyfrom = strbuf_detach(&sb, NULL);
-		}
-	}
-
 	if (magic & PATHSPEC_FROMTOP)
-		retval = xstrdup(copyfrom);
+		return xstrdup(copyfrom);
 	else
-		retval = prefix_path(prefix, prefixlen, copyfrom);
-	if (free_source)
-		free((char *)copyfrom);
-	return retval;
+		return prefix_path(prefix, prefixlen, copyfrom);
 }
 
 const char **get_pathspec(const char *prefix, const char **pathspec)