I understand that reference.Named may not contains the domain part according to its implementation. However, the
function ParseNamed(s string) (Named, error) requires given s to be canonical which conatins the domain part.
Assume that we have reference.Named that holds "cr.io/foo/bar" where domain is "cr.io". The URL build functions such as (ub *URLBuilder) BuildTagsURL(name reference.Named, values ...url.Values)
generates URL "/v2/cr.io/foo/bar" but it must be "/v2/foo/bar".
How about replacing all named.Name() in distribution/registry/api/v2/url.go into reference.Path(named) to give its intention? Or how about remvoe domain part from the argument inNewRepository(name reference.Named, baseURL string, transport http.RoundTripper) to prevent misintended result?
If the current implementation (using named.Name()) is intended, can you explain why it is? If not, please tell me which of the above two methods would be better. I will make PR for this (I think the former way is better).
I understand that
reference.Namedmay not contains the domain part according to its implementation. However, thefunction
ParseNamed(s string) (Named, error)requires givensto be canonical which conatins the domain part.Assume that we have
reference.Namedthat holds "cr.io/foo/bar" where domain is "cr.io". The URL build functions such as(ub *URLBuilder) BuildTagsURL(name reference.Named, values ...url.Values)generates URL "/v2/cr.io/foo/bar" but it must be "/v2/foo/bar".
How about replacing all
named.Name()indistribution/registry/api/v2/url.gointoreference.Path(named)to give its intention? Or how about remvoe domain part from the argument inNewRepository(name reference.Named, baseURL string, transport http.RoundTripper)to prevent misintended result?If the current implementation (using
named.Name()) is intended, can you explain why it is? If not, please tell me which of the above two methods would be better. I will make PR for this (I think the former way is better).