pathspec: remove the deprecated get_pathspec function
Now that all callers of the old 'get_pathspec' interface have been migrated to use the new pathspec struct interface it can be removed from the codebase. Since there are no more users of the '_raw' field in the pathspec struct it can also be removed. This patch also removes the old functionality of modifying the const char **argv array that was passed into parse_pathspec. Instead the constructed 'match' string (which is a pathspec element with the prefix prepended) is only stored in its corresponding pathspec_item entry. Signed-off-by: Brandon Williams <bmwill@google.com> Reviewed-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
e1e24edc1a
commit
34305f7753
@ -27,8 +27,6 @@ parse_pathspec(). This function takes several arguments:
|
||||
|
||||
- prefix and args come from cmd_* functions
|
||||
|
||||
get_pathspec() is obsolete and should never be used in new code.
|
||||
|
||||
parse_pathspec() helps catch unsupported features and reject them
|
||||
politely. At a lower level, different pathspec-related functions may
|
||||
not support the same set of features. Such pathspec-sensitive
|
||||
|
1
cache.h
1
cache.h
@ -514,7 +514,6 @@ extern void set_git_work_tree(const char *tree);
|
||||
|
||||
#define ALTERNATE_DB_ENVIRONMENT "GIT_ALTERNATE_OBJECT_DIRECTORIES"
|
||||
|
||||
extern const char **get_pathspec(const char *prefix, const char **pathspec);
|
||||
extern void setup_work_tree(void);
|
||||
extern const char *setup_git_directory_gently(int *);
|
||||
extern const char *setup_git_directory(void);
|
||||
|
42
pathspec.c
42
pathspec.c
@ -103,7 +103,7 @@ static void prefix_short_magic(struct strbuf *sb, int prefixlen,
|
||||
*/
|
||||
static unsigned prefix_pathspec(struct pathspec_item *item,
|
||||
unsigned *p_short_magic,
|
||||
const char **raw, unsigned flags,
|
||||
unsigned flags,
|
||||
const char *prefix, int prefixlen,
|
||||
const char *elt)
|
||||
{
|
||||
@ -240,7 +240,7 @@ static unsigned prefix_pathspec(struct pathspec_item *item,
|
||||
if (!match)
|
||||
die(_("%s: '%s' is outside repository"), elt, copyfrom);
|
||||
}
|
||||
*raw = item->match = match;
|
||||
item->match = match;
|
||||
/*
|
||||
* Prefix the pathspec (keep all magic) and assign to
|
||||
* original. Useful for passing to another command.
|
||||
@ -381,8 +381,6 @@ void parse_pathspec(struct pathspec *pathspec,
|
||||
|
||||
/* No arguments with prefix -> prefix pathspec */
|
||||
if (!entry) {
|
||||
static const char *raw[2];
|
||||
|
||||
if (flags & PATHSPEC_PREFER_FULL)
|
||||
return;
|
||||
|
||||
@ -394,10 +392,7 @@ void parse_pathspec(struct pathspec *pathspec,
|
||||
item->original = prefix;
|
||||
item->nowildcard_len = item->len = strlen(prefix);
|
||||
item->prefix = item->len;
|
||||
raw[0] = prefix;
|
||||
raw[1] = NULL;
|
||||
pathspec->nr = 1;
|
||||
pathspec->_raw = raw;
|
||||
return;
|
||||
}
|
||||
|
||||
@ -415,7 +410,6 @@ void parse_pathspec(struct pathspec *pathspec,
|
||||
pathspec->nr = n;
|
||||
ALLOC_ARRAY(pathspec->items, n);
|
||||
item = pathspec->items;
|
||||
pathspec->_raw = argv;
|
||||
prefixlen = prefix ? strlen(prefix) : 0;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
@ -423,7 +417,7 @@ void parse_pathspec(struct pathspec *pathspec,
|
||||
entry = argv[i];
|
||||
|
||||
item[i].magic = prefix_pathspec(item + i, &short_magic,
|
||||
argv + i, flags,
|
||||
flags,
|
||||
prefix, prefixlen, entry);
|
||||
if ((flags & PATHSPEC_LITERAL_PATH) &&
|
||||
!(magic_mask & PATHSPEC_LITERAL))
|
||||
@ -457,36 +451,6 @@ void parse_pathspec(struct pathspec *pathspec,
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* N.B. get_pathspec() is deprecated in favor of the "struct pathspec"
|
||||
* based interface - see pathspec.c:parse_pathspec().
|
||||
*
|
||||
* Arguments:
|
||||
* - prefix - a path relative to the root of the working tree
|
||||
* - pathspec - a list of paths underneath the prefix path
|
||||
*
|
||||
* Iterates over pathspec, prepending each path with prefix,
|
||||
* and return the resulting list.
|
||||
*
|
||||
* If pathspec is empty, return a singleton list containing prefix.
|
||||
*
|
||||
* If pathspec and prefix are both empty, return an empty list.
|
||||
*
|
||||
* This is typically used by built-in commands such as add.c, in order
|
||||
* to normalize argv arguments provided to the built-in into a list of
|
||||
* paths to process, all relative to the root of the working tree.
|
||||
*/
|
||||
const char **get_pathspec(const char *prefix, const char **pathspec)
|
||||
{
|
||||
struct pathspec ps;
|
||||
parse_pathspec(&ps,
|
||||
PATHSPEC_ALL_MAGIC &
|
||||
~(PATHSPEC_FROMTOP | PATHSPEC_LITERAL),
|
||||
PATHSPEC_PREFER_CWD,
|
||||
prefix, pathspec);
|
||||
return ps._raw;
|
||||
}
|
||||
|
||||
void copy_pathspec(struct pathspec *dst, const struct pathspec *src)
|
||||
{
|
||||
*dst = *src;
|
||||
|
@ -19,7 +19,6 @@
|
||||
#define PATHSPEC_ONESTAR 1 /* the pathspec pattern satisfies GFNM_ONESTAR */
|
||||
|
||||
struct pathspec {
|
||||
const char **_raw; /* get_pathspec() result, not freed by clear_pathspec() */
|
||||
int nr;
|
||||
unsigned int has_wildcard:1;
|
||||
unsigned int recursive:1;
|
||||
|
Loading…
Reference in New Issue
Block a user