ref namespaces: Support remote repositories via upload-pack and receive-pack
authorJosh Triplett <josh@joshtriplett.org>
Fri, 8 Jul 2011 23:13:32 +0000 (16:13 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 11 Jul 2011 16:35:38 +0000 (09:35 -0700)
commit6b01ecfe22f0b6ccb9665cd8d85d78a381fecffc
tree19812469f136c477c63fa044ddd803e2ef3c856c
parenta1bea2c1fc5e5243e873919248940dd5fff593a4
ref namespaces: Support remote repositories via upload-pack and receive-pack

Change upload-pack and receive-pack to use the namespace-prefixed refs
when working with the repository, and use the unprefixed refs when
talking to the client, maintaining the masquerade.  This allows
clone, pull, fetch, and push to work with a suitably configured
GIT_NAMESPACE.

receive-pack advertises refs outside the current namespace as .have refs
(as it currently does for refs in alternates), so that the client can
use them to minimize data transfer but will otherwise ignore them.

With appropriate configuration, this also allows http-backend to expose
namespaces as multiple repositories with different paths.  This only
requires setting GIT_NAMESPACE, which http-backend passes through to
upload-pack and receive-pack.

Signed-off-by: Josh Triplett <josh@joshtriplett.org>
Signed-off-by: Jamey Sharp <jamey@minilop.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/receive-pack.c
upload-pack.c