【问题标题】:SVN authz, path-based authentication on trunk / branchSVN authz,主干/分支上基于路径的身份验证
【发布时间】:2024-01-18 00:00:02
【问题描述】:

我使用 authz 文件来限制对 svn 服务器(projA、projB)的访问。 我想对主干和分支使用相同的限制。 有没有一种很好的方法,而不是复制/粘贴配置:

[/]<br>
* = r

[/trunk/projA]<br>
toto = rw<br>
tata =

[/trunk/projB]<br>
toto = <br>
tata = rw

[/branch1/projA]<br>
toto = rw<br>
tata =

[/branch1/projB]<br>
toto = <br>
tata = rw

由于我有大量的项目和分支,这种配置变得难以维护。

【问题讨论】:

    标签: svn trunk authz


    【解决方案1】:

    没有。最简单的解决方案是使用svnperms.py 脚本来处理这个问题。 svnperms.py 的问题在于您无法处理这种情况以防止看到文件夹(toto = )。否则你必须通过复制和过去来处理它。

    如果您将组织更改为:

       +-- project1
            +--- trunk
            +--- tags
            +--- branches
       +-- project2
            +--- trunk
            +--- tags
            +--- branches
    

    但我不知道这是否是一个选项。

    【讨论】:

    • 感谢您的回答。您提出的组织实际上是您现在使用的,但维护起来也很繁重。当我们创建标签时,我们需要在配置中添加所有的新闻标签。这就是为什么我认为在项目之前移动主干/分支会有所帮助。您知道使用 GIT 是否更容易进行此类用户访问配置?
    • 可能是我理解错了,但是为什么需要在配置中添加所有的新闻标签呢?像这样的用户访问配置对于 Git 来说是不可能的,因为 git 在标签/分支级别上没有用户访问机制。在 Git 中,每个项目都需要一个存储库。
    • 当我在我的项目(projA 和 projB,因为它们具有交叉依赖关系)上创建一个新分支(新版本发布)时,我的服务器是:/branch-v1/projA、/branch-v1/ projB、/branch-v2/projA、/branch-v2/projB。对于每个新版本,我需要在配置文件中添加新行以保持访问限制。也许我误用了分支/主干的工作方式?
    • 您可以使用 svn:externals 来定义此类依赖关系,或者更好的方法是使用处理此类事情的构建工具。
    • 非常感谢,我从没想过使用 svn:externals。它看起来很强大,但有点敏感。我会做一些尝试。我也试过piston.rubyforge,但网站似乎关闭了。
    最近更新 更多