On Wed, 25 Jan 2017 at 20:51:17, Junio C Hamano wrote: > [...] > > diff --git a/builtin/receive-pack.c b/builtin/receive-pack.c > > index 8f8762e4a..c55e2f993 100644 > > --- a/builtin/receive-pack.c > > +++ b/builtin/receive-pack.c > > @@ -251,8 +251,9 @@ static void show_ref(const char *path, const unsigned char *sha1) > [...] > > if (ref_is_hidden(path, path_full)) > [...] > This is an unrelated tangent, but there may want to be a knob to > make the code return here without even showing, to make the > advertisement even smaller and also to stop miniscule information > leakage? If the namespaced multiple projects are totally unrelated > (i.e. "My sysadmin gave me a write access only to this single > directory, so I am using the namespace feature to host these three > projects that have nothing to do with each other"), showing objects > of other namespaces will buy us nothing and the user is better off > without this code showing these refs as ".have". I think this is already possible using receive.hideRefs (which causes the ref_is_hidden() branch above to return if applicable). Having support for suppressing .have lines corresponding to different namespaces was actually the reason I implemented 78a766ab6 (hideRefs: add support for matching full refs, 2015-11-03). We have been using namespaces for hosting the package Git repositories of the Arch Linux User Repository [1] with a shared object storage for several months now. See [2] for *some* technical details on how things are implemented; the last section explains how the hideRefs mechanism can be used to limit ref advertisement to the "active" namespace. Regards, Lukas [1] https://aur.archlinux.org/ [2] https://git.archlinux.org/aurweb.git/plain/doc/git-interface.txt