我需要设置一个 SVN 存储库,除两个子文件夹 /1 和 /2 之外,devgroup 应该具有完全的读写权限。
对于 /1 和 /2,四个用户应该具有写权限,而所有其他用户应该只具有读权限。
我将以下内容放入配置文件中,但 devgroup 中的人仍然对 /1 和 /2 具有写权限。
任何帮助都将非常感激。
[project:/]
@devgroup = rw
[project:/1]
@devgroup = r
user1 = rw
user2 = rw
user3 = rw
user4 = rw
[project:/2]
@devgroup = r
user1 = rw
user2 = rw
user3 = rw
user4 = rw
答案1
你不能消除@devgroup
因此,通过在存储库的根目录下提供读/写访问权限,您已将其提供给所有子树,从而获得了已授予用户的权限。
我实现此目的的方法是将项目区域划分为具有不同权限的不同存储库,然后使用属性svn:externals
将它们捆绑到顶级存储库中。
该svn:externals
属性可以在任何版本化目录上设置,其值是子目录的多行表(相对于设置该属性的版本化目录)、可选的修订标志以及完全限定的绝对 Subversion 存储库 URL。
$ svn propget svn:externals .
1 http://svn.example.com/repos/restricted-1
2 http://svn.example.com/repos/restricted-2
当有人检出项目 repo 的工作副本时,Subversion 还会继续检出其外部定义中找到的项目。
$ svn checkout http://svn.example.com/repos/project
A project
A project/Makefile
A project/integer.c
A project/button.c
Checked out revision 148.
Fetching external item into 1
A 1/security.c
...
Checked out revision 14.
Fetching external item into 2
...
然后,您可以对两个受限存储库施加限制,以防止@devgroup
用户更新这些存储库,但在他们签出主项目存储库时仍可获取它们。