From: Junio C Hamano Date: Sun, 20 Jan 2013 18:19:09 GMT Subject: Re: [PATCH 0/2] Hiding some refs in ls-remote Message-ID: <7vip6rn2ea.fsf@alter.siamese.dyndns.org> In-Reply-To: <7v38xxnfv3.fsf@alter.siamese.dyndns.org> Junio C Hamano writes: > Duy Nguyen writes: > >> Should the client side learn how to list hidden refs too? I'm thinking >> of an extreme case where upload-pack advertises nothing (or maybe just >> refs/heads/master) and it's up to the client to ask for the ref >> selection it's interested in. upload-pack may need more updates to do >> that, I think. > > What you are talking about is a different goal. > > Look at this as a mechanism for the repository owner to control the > clutter in what is shown to the intended audience of what s/he > publishes in the repository. Network bandwidth reduction of > advertisement is a side effect of clutter reduction, and not > necessarily the primary goal. As a separate and follow-up topic, I can see a future where we also have .delayref (in addition to .hideref) configuration, that causes the upload-pack to: * omit refs that are marked as "delayed"; * advertise "allow-expand-ref=" where the value is the pattern used to specify which refs are omitted via this mechanism (e.g. "refs/*" in your extreme example, or perhaps "refs/tags/" if you only advertise branches in order to limit the bandwidth); and then a fetch-pack that is interested in fetching "refs/foo/bar", after seeing that it matches one of the "allow-expand-ref" patterns, to ask "expand-ref refs/foo/bar", expect the upload-pack to respond with "refs/foo/bar " (or "refs/foo/bar does not exist"), before going into the usual "want" exchange ("ls-remote" would of course do the same, and pattern-less "ls-remote" may even ask to expand everything by saying "expand-ref refs/*" (where the capability said "allow-expand-ref=refs/*" in your extreme example) to grab everything discoverable). That is _primarily_ for trading network bandwidth with initial latency; as far as the end-result is concerned, delayed ones to be expanded on demand are just as discoverable as the ones advertised initially. I think we'd want to have both in the end. It just happens I just posted the beginning of clutter-reduction one, as I think developing both in parallel would be messy and hideref is probably less involved than the delayref.