Subject: Re: [PATCH v4 13/35] ls-refs: introduce ls-refs server command

From: Brandon Williams <[email-masked]>
Date: Mon, 5 Mar 2018 10:21:55 -0800

On 03/02, Jeff King wrote:
> On Wed, Feb 28, 2018 at 03:22:30PM -0800, Brandon Williams wrote:
> 
> > +static void add_pattern(struct pattern_list *patterns, const char *pattern)
> > +{
> > +	struct ref_pattern p;
> > +	const char *wildcard;
> > +
> > +	p.pattern = strdup(pattern);
> 
> xstrdup?
> 
> > +	wildcard = strchr(pattern, '*');
> > +	if (wildcard) {
> > +		p.wildcard_pos = wildcard - pattern;
> > +	} else {
> > +		p.wildcard_pos = -1;
> > +	}
> 
> Hmm, so this would accept stuff like "refs/heads/*/foo" but quietly
> ignore the "/foo" part.

Yeah that's true...this should probably not do that.  Since
"refs/heads/*/foo" violates what the spec is, really this should error
out as an invalid pattern.

> 
> It also accepts "refs/h*" to get "refs/heads" and "refs/hello".  I think
> it's worth going for the most-restrictive thing to start with, since
> that enables a lot more server operations without worrying about
> breaking compatibility.

And just to clarify what do you see as being the most-restrictive case
of patterns that would should use?

-- 
Brandon Williams