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

This reverts commit d0546e2d48, 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.
This commit is contained in:
Junio C Hamano 2011-05-10 10:23:41 -07:00
parent d0546e2d48
commit 6d94292710
2 changed files with 6 additions and 32 deletions

View File

@ -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::

31
setup.c
View File

@ -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)