我在基于 CentOS 的服务器上托管了一个 Subversion 存储库。有几个团队需要访问存储库的不同部分。我想允许不同的用户查看 repo 的不同部分,并隐藏其他部分。
我知道可以通过基于路径的规则设置每个目录的权限,因此例如我可以将designer
用户限制为 r/w onmyrepo/myapp/media/images/
和myrepo/myapp/core/css/
. 但这意味着设计者必须使用这两个特定的 URL 来访问images
和css
文件夹。没有我授予他读取权限,他不能只使用根 URL。
我希望他能够自由地浏览目录树,但只能看到他有权访问的文件夹及其父母。
如果这是一个常规文件系统,我会使用bind --mount
命令在/home/designer/
like/home/designer/css
等中创建一组受限目录/home/designer/images
。
可以在 SVN 回购中完成同样的事情吗?
至少,我是否可以创建第二个“虚拟”存储库,其中包含虚拟链接到主存储库中真实文件夹的文件夹(例如images
, )?css
是的,这是可能的,这是SVN 外部的完美用例
在您的情况下,它可以是:
签出 DESIGNER-ROOT 会将设计器 WC 中的所有外部作为真实树(存储库中不存在),提交会将所有数据传输到真实的外部源
但请注意:如果您在创建定义后更改(重命名、移动)外部源,这些更改不会自动反映在定义中,您必须手动更正
没有什么可以真正阻止这种情况,但这是一个很奇怪的案例,失败的风险非常高。如果绑定挂载受到干扰,存储库将变得不一致。
这是否有效取决于访问存储库的方式。但是,它不是受支持的情况,也不是为工作而设计的,您应该使用路径规则。
我建议如果您使用文件夹权限或进行绑定挂载可能会发生什么,SVN 签出只会对受限用户失败,并且无论如何都会通过更改日志公开数据。
如果这是我,我会将组件分解为单独的存储库。