X-Git-Url: http://git.scripts.mit.edu/?a=blobdiff_plain;f=pathspec.c;h=87b3b82f1fd9baee7758159e5e3119b6da0655e3;hb=8cd4249c4cdb19fce489a3f6ba31f499f4331341;hp=ad1a9f5b28c5119275fbcf9a53e62651190de137;hpb=9f279af86206e36e9ecd25ab81515e0af81bf2ad;p=git.git diff --git a/pathspec.c b/pathspec.c index ad1a9f5b28..87b3b82f1f 100644 --- a/pathspec.c +++ b/pathspec.c @@ -128,7 +128,11 @@ static unsigned prefix_pathspec(struct pathspec_item *item, die(_("global 'literal' pathspec setting is incompatible " "with all other global pathspec settings")); - if (elt[0] != ':' || literal_global) { + if (flags & PATHSPEC_LITERAL_PATH) + global_magic = 0; + + if (elt[0] != ':' || literal_global || + (flags & PATHSPEC_LITERAL_PATH)) { ; /* nothing to do */ } else if (elt[1] == '(') { /* longhand */ @@ -193,11 +197,11 @@ static unsigned prefix_pathspec(struct pathspec_item *item, magic |= short_magic; *p_short_magic = short_magic; - /* --noglob-pathspec adds :(literal) _unless_ :(glob) is specifed */ + /* --noglob-pathspec adds :(literal) _unless_ :(glob) is specified */ if (noglob_global && !(magic & PATHSPEC_GLOB)) global_magic |= PATHSPEC_LITERAL; - /* --glob-pathspec is overriden by :(literal) */ + /* --glob-pathspec is overridden by :(literal) */ if ((global_magic & PATHSPEC_GLOB) && (magic & PATHSPEC_LITERAL)) global_magic &= ~PATHSPEC_GLOB; @@ -405,6 +409,9 @@ void parse_pathspec(struct pathspec *pathspec, item[i].magic = prefix_pathspec(item + i, &short_magic, argv + i, flags, prefix, prefixlen, entry); + if ((flags & PATHSPEC_LITERAL_PATH) && + !(magic_mask & PATHSPEC_LITERAL)) + item[i].magic |= PATHSPEC_LITERAL; if (item[i].magic & magic_mask) unsupported_magic(entry, item[i].magic & magic_mask,