rev-list: disable object/refname ambiguity check with --stdin
[gitweb.git] / pathspec.c
index 62fde5060f064388387059d55e18f4ca5c36ad00..87b3b82f1fd9baee7758159e5e3119b6da0655e3 100644 (file)
@@ -32,7 +32,7 @@ void add_pathspec_matches_against_index(const struct pathspec *pathspec,
        if (!num_unmatched)
                return;
        for (i = 0; i < active_nr; i++) {
-               struct cache_entry *ce = active_cache[i];
+               const struct cache_entry *ce = active_cache[i];
                match_pathspec_depth(pathspec, ce->name, ce_namelen(ce), 0, seen);
        }
 }
@@ -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,