CVS Server: Support reading base and roots from environment
authorPhil Miller <mille121@illinois.edu>
Wed, 30 Dec 2009 19:35:31 +0000 (13:35 -0600)
committerJunio C Hamano <gitster@pobox.com>
Wed, 30 Dec 2009 22:08:09 +0000 (14:08 -0800)
commit03bd0d601ea842b2db5bd40a1f7f036989f9b517
tree9da885f8a5822737478e5b98044644188ec21bc9
parent902f235378cb2b2f6dd5dd664b9630c95321f0ae
CVS Server: Support reading base and roots from environment

The Gitosis single-account Git/ssh hosting system runs git commands
through git-shell after confirming that the connecting user is
authorized to access the requested repository. This works well for
upload-pack and receive-pack, which take a repository argument through
git-shell. This doesn't work so well for `cvs server', which is passed
through literally, with no arguments. Allowing arguments risks
sneaking in `--export-all', so that restriction should be maintained.

Despite that, passing a repository root is necessary for per-user
access control by the hosting software, and passing a base path
improves usability without weakening security. Thus, git-cvsserver
needs to come up with these values at runtime by some other
means. Since git-shell preserves the environment for other purposes,
the environment can carry these arguments as well.

Thus, modify git-cvsserver to read $GIT_CVSSERVER_{BASE_PATH,ROOT} in
the absence of equivalent command line arguments.

Signed-off-by: Phil Miller <mille121@illinois.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-cvsserver.txt
git-cvsserver.perl