Add the `PATHSPEC_FROMROOT` flag to allow callers to instruct 'parse_pathspec()' that all provided pathspecs are relative to the root of the repository. This allows a caller to prevent a path that may be outside of the repository from erroring out during the pathspec struct construction. Signed-off-by: Brandon Williams <bmwill@xxxxxxxxxx> --- pathspec.c | 2 +- pathspec.h | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/pathspec.c b/pathspec.c index 7ababb315..ff622ba18 100644 --- a/pathspec.c +++ b/pathspec.c @@ -353,7 +353,7 @@ static void init_pathspec_item(struct pathspec_item *item, unsigned flags, if (pathspec_prefix >= 0) { match = xstrdup(copyfrom); prefixlen = pathspec_prefix; - } else if (magic & PATHSPEC_FROMTOP) { + } else if ((magic & PATHSPEC_FROMTOP) || (flags & PATHSPEC_FROMROOT)) { match = xstrdup(copyfrom); prefixlen = 0; } else { diff --git a/pathspec.h b/pathspec.h index 49fd823dd..cad197436 100644 --- a/pathspec.h +++ b/pathspec.h @@ -66,6 +66,8 @@ struct pathspec { * allowed, then it will automatically set for every pathspec. */ #define PATHSPEC_LITERAL_PATH (1<<8) +/* For callers that know all paths are relative to the root of the repository */ +#define PATHSPEC_FROMROOT (1<<9) extern void parse_pathspec(struct pathspec *pathspec, unsigned magic_mask, -- 2.11.0.483.g087da7b7c-goog