我在 Subversion 中有一个目录结构。
问题是我生成了许多标签,现在需要限制其中的访问。
需要做一些通用的事情。
[Repo:/tags/**/folder]
developers =
Administrator = rw
问题是这不起作用,开发人员在获得许可后继续。
有出路还是我必须为生成的每个标签进行配置?
我在 Subversion 中有一个目录结构。
问题是我生成了许多标签,现在需要限制其中的访问。
需要做一些通用的事情。
[Repo:/tags/**/folder]
developers =
Administrator = rw
问题是这不起作用,开发人员在获得许可后继续。
有出路还是我必须为生成的每个标签进行配置?
Subversion 不支持通配符用于基于路径的授权。您需要在更高级别进行限制,或单独指定路径。
问题是我生成了许多标签,现在需要限制其中的访问。
两件事情:
不要创建这么多标签。您始终可以使用修订号作为标签,并且在许多站点中,它们就是这样做的。有人会说“我们是否对修订版 54220 进行了代码审查?” 使用修订号作为标签将使您免于创建如此多的修订号。如果你使用像Jenkins这样的 CI 系统,你可以使用内部版本号作为标签,因为它们指向特定的 Subversion 版本。
你为什么要限制对标签的访问?是否突然有一些超级机密信息出现在该标签上,而以前该标签来自哪里?您不能在svnaccess
文件中使用通配符。
我认为真正的问题是你有太多标签,而用户列出它们需要很长时间。另外,如果您有 20,000 个标签,则很难找到您要查找的标签/tags
。在这种情况下,只需删除您不再需要的标签。
但是,这不意味着我们会丢失信息吗?如果我发现我需要那个标签怎么办?
Subversion 不会永久删除任何内容。如果需要,您可以随时取回旧版本。假设您删除了一个旧标签:
$ svn delete http://repo/svn/tags/2.4
现在,您意识到出于某种奇怪的原因需要该特定版本。也许那个旧版本还有一个客户。删除后如何找回?
首先,您会发现它在哪个修订版中被删除:
$ svn log -v http://repo/svn/tags
...
----------------------------------------------------------------------
r32394 | alroc | 2003-01-17 22:56:19 -0600 (Fri, 17 Jan 2003) | 1 line
Changed Paths:
D /tags/2.4
Deleted obsolete tag that's no longer needed
----------------------------------------------------------------------
那里!它在修订版-r32394 中被删除。这意味着在之前的 Subversion 修订版 (32393) 中,它仍然存在。让我们从修订版 32393 中检查该标签:
$ svn checkout -r32393 http://repo/svn/tags/2.4@32393
全部完成。我们有那个旧代码。如果您需要将该标签返回到您的存储库中,请将其复制回/tags
:
$ svn copy -r32393 http://repo/svn/tags/2.4@32393 http://repo/svn/tags
现在,/tags/2.4
回来了。
如果你真的,真的不喜欢删除标签,那么在某个地方创建一个标签存档目录,并将过时的标签移到那里。这样,您不会删除标签,但是当您执行svn ls http://repo/svn/tags
.
这样做的问题是,如果您想要进行转储和加载(例如,您将一个项目分离到另一个存储库中),svndumpfilter
如果您不包含归档标签,那么一切都会变得一团糟。
最好的办法是不要一开始就制造问题。只为发布创建标签,如果您仍然觉得标签太多,请删除标签。