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:
@ -319,13 +319,10 @@ top `/`;;
|
|||||||
The magic word `top` (mnemonic: `/`) makes the pattern match
|
The magic word `top` (mnemonic: `/`) makes the pattern match
|
||||||
from the root of the working tree, even when you are running
|
from the root of the working tree, even when you are running
|
||||||
the command from inside a subdirectory.
|
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.
|
versions of git.
|
||||||
|
|
||||||
[[def_parent]]parent::
|
[[def_parent]]parent::
|
||||||
|
31
setup.c
31
setup.c
@ -136,12 +136,12 @@ void verify_non_filename(const char *prefix, const char *arg)
|
|||||||
* Possible future magic semantics include stuff like:
|
* Possible future magic semantics include stuff like:
|
||||||
*
|
*
|
||||||
* { PATHSPEC_NOGLOB, '!', "noglob" },
|
* { PATHSPEC_NOGLOB, '!', "noglob" },
|
||||||
|
* { PATHSPEC_ICASE, '\0', "icase" },
|
||||||
* { PATHSPEC_RECURSIVE, '*', "recursive" },
|
* { PATHSPEC_RECURSIVE, '*', "recursive" },
|
||||||
* { PATHSPEC_REGEXP, '\0', "regexp" },
|
* { PATHSPEC_REGEXP, '\0', "regexp" },
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#define PATHSPEC_FROMTOP (1<<0)
|
#define PATHSPEC_FROMTOP (1<<0)
|
||||||
#define PATHSPEC_ICASE (1<<1)
|
|
||||||
|
|
||||||
struct pathspec_magic {
|
struct pathspec_magic {
|
||||||
unsigned bit;
|
unsigned bit;
|
||||||
@ -149,7 +149,6 @@ struct pathspec_magic {
|
|||||||
const char *name;
|
const char *name;
|
||||||
} pathspec_magic[] = {
|
} pathspec_magic[] = {
|
||||||
{ PATHSPEC_FROMTOP, '/', "top" },
|
{ 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;
|
unsigned magic = 0;
|
||||||
const char *copyfrom = elt;
|
const char *copyfrom = elt;
|
||||||
const char *retval;
|
int i;
|
||||||
int i, free_source = 0;
|
|
||||||
|
|
||||||
if (elt[0] != ':') {
|
if (elt[0] != ':') {
|
||||||
; /* nothing to do */
|
; /* nothing to do */
|
||||||
@ -224,31 +222,10 @@ const char *prefix_pathspec(const char *prefix, int prefixlen, const char *elt)
|
|||||||
copyfrom++;
|
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)
|
if (magic & PATHSPEC_FROMTOP)
|
||||||
retval = xstrdup(copyfrom);
|
return xstrdup(copyfrom);
|
||||||
else
|
else
|
||||||
retval = prefix_path(prefix, prefixlen, copyfrom);
|
return prefix_path(prefix, prefixlen, copyfrom);
|
||||||
if (free_source)
|
|
||||||
free((char *)copyfrom);
|
|
||||||
return retval;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char **get_pathspec(const char *prefix, const char **pathspec)
|
const char **get_pathspec(const char *prefix, const char **pathspec)
|
||||||
|
Reference in New Issue
Block a user