我在一台带有Apache dav-svn模块的Ubuntu服务器上运行SVN服务器,通过http访问它。
我有几个客户的项目,所以我在/ var / svn
上创建了一个树结构/var/svn/client_1
/var/svn/client_1/project_1
/var/svn/client_1/project_2
...
/var/svn/client_2
/var/svn/client_2/project_1
/var/svn/client_2/project_2
每个项目都是一个新的存储库,当我需要创建一个新项目时,我会执行以下操作
在客户端文件夹中创建一个新存储库
svnadmin create / var / svn / client_X / project_Y
在dav_svn_conf上创建一个新条目
<Location /client_X>
DAV svn
SVNParentPath /var/svn/client_X
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/apache2/dav_svn.passwd
Require valid-user
AuthzSVNAccessFile /etc/apache2/svn-acl.txt
</Location>
所以此刻我可以访问: https://my_svn_server.com/client_x/project_y
在/etc/apache2/svn-acl.txt文件中,我可以完全控制所有存储库
[/]
my_user=rw
现在我想让客户访问他所拥有的项目,但我不能这样做。如果我使用存储库名称,则他可以访问其他客户端的所有存储库
[project_1:/]
client_user=rw
他可以访问client_1 / project_1和client_2 / project_1
我想做以下事情:
[client_1:/]
client_user=rw
我该怎么办?我应该改变创建存储库的方式吗?
感谢您的回答。
答案 0 :(得分:0)
我建议不使用SVN的ACL,而是使用Apache / HTTP Auth通过Location
规则管理网址空间,简单Allow
和Deny