grep: avoid accepting ambiguous revision
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Mon, 21 Jan 2013 13:00:49 +0000 (20:00 +0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 22 Jan 2013 00:57:38 +0000 (16:57 -0800)
Unlike other commands that take both revs and pathspecs without "--"
disamiguators only when the boundary is clear, "git grep" treated
what can be interpreted as a rev as-is, without making sure that it
could also have meant a pathspec.  E.g.

    $ git grep -e foo master

when 'master' is in the working tree, should have triggered an
ambiguity error, but it didn't, and searched in the tree of the
commit named by 'master'.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/grep.c

index 0e1b6c860e18c6c47f343fad885cbd24f641862e..8025964987553b8f1ef21b8319b2085d6d31bb0c 100644 (file)
@@ -823,6 +823,8 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
                        struct object *object = parse_object(sha1);
                        if (!object)
                                die(_("bad object %s"), arg);
+                       if (!seen_dashdash)
+                               verify_non_filename(prefix, arg);
                        add_object_array(object, arg, &list);
                        continue;
                }