是否可以创build一个“虚拟的”SVN仓库,其自己的文件夹指向另一个仓库中的文件夹(如FS装载)?

我有一个基于CentOS的服务器托pipe的Subversion repo。 有几个团队需要访问存储库的不同部分。 我想让不同的用户看到回购的不同部分,并隐藏其他部分。

我知道可以通过基于path的规则设置每个目录的权限,例如,我可以限制designer用户在myrepo/myapp/media/images/myrepo/myapp/core/css/上的r / w。 但这意味着devise师必须使用这两个特定的URL来访问imagescss文件夹。 没有我给他阅读许可,他不能只使用根URL。

我希望他能够自由地浏览目录树,但只能看到他有权访问的文件夹及其父母。

如果这是一个普通的文件系统,我会使用bind --mount命令在/home/designer//home/designer/css/home/designer/images等内部创build一组受限制的目录。

SVN回购可以做同样的事情吗?

至less,我可以创build第二个“虚拟”存储库,其中包含虚拟链接到主库的真实文件夹的文件夹(例如imagescss )?

是的,这是可能的,这是SVN外部的完美用例

在你的情况下可以是:

  • 新的物理文件夹在通常的树之外的回购
  • 这个DESIGNER-ROOT里面的一些“逻辑”子文件夹,创build为指向真实文件夹的链接(在任何其他位置,在回购里面甚至在外部回购里)

DESIGNER-ROOT的签出会将devise者的WC中的所有外部设备作为真正的树(在存储库中不存在)提交,commit将把所有的数据转移到真实的外部源

但要小心 :如果您在创build定义后更改(重命名,移动)外部源,则这些更改将不会在定义中自动反映,您必须手动更正

没有什么可以阻止这种情况发生,但这是一个非常高的失败风险。 如果绑定挂载受到干扰,存储库将变得不一致。

这是否甚至有效取决于如何访问存储库。 但是,这不是受支持的情况,它不适用于工作,您应该使用path规则。

我build议,如果你使用文件夹权限,或者使绑定挂载的东西可能会发生什么,SVN checkout将只是失败的受限制的用户,数据将通过更改日志暴露无论如何。

如果这是我,我会分解成单独的存储库。