We wanted a folder called OralHistoryDocs to contain two subfolders "originals" and "redacteds". We wanted the originals folder to be not accessible other than to members of a specified user gropu (i.e. didn't want people able to browse to that folder in the web interface).
Here’s the deal with “hidden” folders in svn
To make a folder hidden, you have to add something like this to the svnusers file (user landscapes/oralHistoryDocs/originals as the example):
@landscapesradisheds = rw
The first line specifies which repo and path to affect
The second line denies read and write access to all users
The third line allows read and write access to members of the group landscapesradisheds
Results In the web-based interface:
- if I browse to landscapes/oralHistoryDocs I do not see the originals folder even if I'm logged in as a member of the landscapesradisheds group
- if I browse to landscapes/oralHistoryDocs/originals logged in as a member, I see the contents of that folder. I haven't tested this, but I'm assuming that if I'm not a member of the group, the authentication will fail and I won't get in.
Results on the command line:
The hidden folder seems
- to be invisible to the svn crawler
- has a record in whatever db structure svn uses
- that it's contents can be addressed
If I create an oralHistoryDocs folder locally and then svn checkout the oralHistoryDocs folder from the server, I do not get the originals subfolder, nor any of the files in it. If I then try to create an originals folder on the local copy and svn add it to the repo, I get at “originals folder already exists, so can’t be added” error from svn. So, there seems to be no way to get a nested svn-hidden folder to behave at the command line like an svn-normal folder.
On the other hand, if I create an originals folder locally and then from within that folder do an svn checkout of the originals folder from the server, I get the contents of the originals folder from the server. I can update, add, delete commit as normal. So, for each hidden folder in the server copy of the repo, the user would have to create a separate svn repo for just that folder and execute svn commands as usual, which will update the nested folder on the server.
Structure on server:
- - originals
- - - a.txt
- - - b.txt
- - redacteds
- - - c.txt
Structure on local
- - c.txt
I suspect the commands are being run as some kind of system user (which is not a member of the landscapesradisheds group), but have done no research.