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

Reply via email to