Jeff King <peff@xxxxxxxx> writes: > If we see "git grep pattern rev -- file" then we apply the > usual rev/pathspec disambiguation rules: any "rev" before > the "--" must be a revision, and we do not need to apply the > verify_non_filename() check. > > But there are two bugs here: > > 1. We keep a seen_dashdash flag to handle this case, but > we set it in the same left-to-right pass over the > arguments in which we parse "rev". > > So when we see "rev", we do not yet know that there is > a "--", and we mistakenly complain if there is a > matching file. > > We can fix this by making a preliminary pass over the > arguments to find the "--", and only then checking the rev > arguments. > > 2. If we can't resolve "rev" but there isn't a dashdash, > that's OK. We treat it like a path, and complain later > if it doesn't exist. > > But if there _is_ a dashdash, then we know it must be a > rev, and should treat it as such, complaining if it > does not resolve. The current code instead ignores it > and tries to treat it like a path. > > This patch fixes both bugs, and tries to comment the parsing > flow a bit better. Good. Thanks.