如何限制所有标签Subversion中的访问文件夹?

时间:2014-09-18 23:19:43

标签: svn subversion-edge

我在Subversion中有一个目录结构。

问题在于我生成了大量标签,现在需要限制其中的访问权限。

需要做一些通用的事情。

[Repo:/tags/**/folder]
developers = 
Administrator = rw 

问题是不起作用,开发人员继续获得许可。

有一条出路或者我必须为每个生成的标签进行配置吗?

2 个答案:

答案 0 :(得分:3)

Subversion不支持基于路径授权的通配符。您需要限制在更高级别,或单独指定路径。

答案 1 :(得分:2)

  

问题在于我生成了大量标签,现在需要限制其中的访问权限。

两件事:

  • 不要创建这么多标签。您始终可以将修订号用作标记,并且在许多站点中,这就是他们所做的。有人会说“我们是否对版本54220进行了代码审查?”使用修订号作为标记将使您无法创建这么多版本。如果您使用Jenkins之类的CI系统,则可以将构建号用作标记,因为它们指向特定的Subversion修订版。

  • 您为什么要限制对代码的访问?是否突然出现了一些超级密码信息,这些信息在该标签上以前不是该标签的来源?您无法在svnaccess文件中使用通配符。

我认为 真正的 问题是您有太多标签,而列出它们的用户需要很长时间。另外,如果你在/tags下有2万个标签,很难找到你想要的标签。在这种情况下,只需删除不再需要的标签。

但是,这不意味着我们会丢失信息吗?如果我发现我需要那个标签怎么办?

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就会搞砸了。存档标签。

最好的选择不是首先创造问题。只为版本创建标签,如果仍然觉得有太多标签,则删除标签。