From: Junio C Hamano Date: Tue, 14 Feb 2017 19:18:36 GMT Subject: Re: [PATCH 5/7] grep: fix "--" rev/pathspec disambiguation Message-ID: In-Reply-To: <20170214060555.yzh6hhi2t7pkeqvi@sigill.intra.peff.net> Jeff King 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.