On Tue, Feb 14, 2023 at 09:10:04PM -0800, Junio C Hamano wrote: > Jeff King <peff@xxxxxxxx> writes: > > > It does indeed. I pulled the logic from skip_prefix(), thinking that by > > relying on it I would avoid making a stupid mistake. Oh well. :) > > > > Doing it like this is much more readable: > > ... > > I'll hold on to that (plus an adjustment to the comment below to match, > > and perhaps a test for this negative-match case) for a day or so to give > > anybody else a chance to comment, and then send out a v2 tomorrow. > > Thanks, and surely that is very readable. > > Alternatively, I think you can just compare refname and rule until > they diverge, without doing any special casing for per-cent on the > rule side inside the loop. > > If you do not find any difference, or the byte that differ is not > the per-cent at the beginning of "%.*s" on the rule side, they they > do not match. I had a similar thought, but I think it is fooled by "refs/heads/%foo". The correct shortening there is "%foo". But we'd parse the "refs/heads/%.*s" rule up to the ".", and then complain that they do not match. -Peff