Hi,
We are trying to set up svnserve to serve part of a repository to the
public. The problem: "svn log" shows _all_ log messages in the repo when
invoked on the repo root, even when "svn ls" on the same path gives
"Authorization failed".
The goal: serve repository path /cyclingproject/public read-only to
anyone, and the rest of the repo should not be available to the public.
In particular, log messages to files not in /cyclingproject/public
should not be available.
We are mirroring our main repository with svnsync, restricting the copy
to the path /cyclingproject/public. Only data in this path seems to be
copied, but all log messages in the main repo are coming over. We are
using file: to do the mirroring, so this step does not involve svnserve.
It is the mirror that we're serving with svnserve.
We are on version 1.5.7.
Contents of svnserve.conf:
[general]
anon-access = read
auth-access = none
authz-db = authz
Contents of authz:
[/cyclingproject/public]
* = r
We invoke svnserve as:
$ svnserve -d --foreground -r /project/Grouplens/svn-cyclopath-public
"svn ls" output (all this is what we want):
$ svn ls svn://localhost/
svn: Authorization failed
$ svn ls svn://localhost/cyclingproject
svn: Authorization failed
$ svn ls svn://localhost/cyclingproject/public
test
"svn log" output:
$ svn log svn://localhost/cyclingproject/public
[log messages for /cyclingproject/public]
$ svn log svn://localhost/cyclingproject
svn: Item is not readable
$ svn log svn://localhost
[log messages for the whole mirror repository]
It is the last command that is the problem. The expected (and desired)
behavior is either (a) "svn: Item is not readable" or (b) log messages
for /cyclingproject/public only.
What's wrong? Did I make a configuration error? Is this a bug?
All I can think of is to write a commit hook in the mirror repository
that removes log messages for paths that shouldn't be public.
Any help would be much appreciated.
Reid