添加分支时SVN基于路径的授权错误

Posted

技术标签:

【中文标题】添加分支时SVN基于路径的授权错误【英文标题】:SVN Path-Based Authorization Error When Adding Branches 【发布时间】:2018-07-14 00:57:38 【问题描述】:

我已在 SVN 服务器上修改了我的 authz 文件以启用基于路径的授权。在为存储库中的分支指定授权设置时遇到问题。这是我的 authz 文件的样子:

[aliases]
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average

[groups]
firmware_team = eddie,jackson
contractors = frank,max

# Provide default access here for entire repository
[/]
* =
@firmware_team = rw

# Define access here for the myrepo repository
[myrepo:/]
@contractors = r

[myrepo:/branches/contractor_branch/]
@contractors = rw

因此,默认情况下,我为每个人提供对我的存储库的只读访问权限,同时还提供对 firmware_team 组的默认读/写访问权限。

这里的问题是,当我添加为存储库的特定分支启用授权的这些行时,firmware_team 组被禁止提交到 myrepo 主干:

[myrepo:/branches/contractor_branch/]
@contractors = rw

如果我这样注释掉这些行:

# [myrepo:/branches/contractor_branch/]
# @contractors = rw

然后允许固件团队再次访问中继。我不知道为什么会发生这种情况,有人可以启发我吗?

我在 SVN Book 中发现有趣的一件事是这一行:

群组成员的权限只能扩展到 组已经拥有的权限。限制属于 a 的用户 组权限低于他们组的权限是不可能的。

这让我想到,如果我授予组对整个 repo 的读/写访问权限,那么只需向该 repo 的分支添加特定授权不应导致组失去对所述 repos 主干的访问权限。

【问题讨论】:

【参考方案1】:

我发现了我遇到的问题。指定基于路径的存储库授权时,您必须省略存储库末尾的斜杠。比如:

这个:

[myrepo:/branches/contractor_branch/]
@contractors = rw

应该这样设置:

[myrepo:/branches/contractor_branch]
@contractors = rw

奇怪的是,这仅适用于存储库根目录以外的任何内容。所以这个:

[myrepo:/]
@contractors = r

仍然有效,因为它指向根。

【讨论】:

以上是关于添加分支时SVN基于路径的授权错误的主要内容,如果未能解决你的问题,请参考以下文章

Git与SVN交叉使用

尝试从分支合并时出现 SVN 错误

Maven 发布分支失败,错误=7,参数列表太长

错误:“svn://IP.Address”不支持检索合并信息?

详细说明svn分支与合并---命令行

SVN版本控制管理操作