如何在所有标签Subversion中限制访问文件夹?
我在Subversion中有一个目录结构。如何在所有标签Subversion中限制访问文件夹?
问题是我生成了很多标签,现在需要限制它们内的访问。
需要做一些通用的。
[Repo:/tags/**/folder]
developers =
Administrator = rw
问题是,这是行不通的,开发人员继续获得许可。
有没有办法,或者我必须为每个生成的标签进行配置?
Subversion不支持通配符进行基于路径的授权。您需要在更高级别进行限制,或者分别指定路径。
问题是我生成了很多标签,现在需要限制它们内的访问。
两件事情:
不要创造如此多的标签。您始终可以使用版本号标签,并且在许多网站中,这就是他们所做的。有人会说“我们是否对54220修订版进行了代码审查?”使用修订号码作为标签将使您无法创建如此多的标签。如果您使用CI系统(例如Jenkins),则可以使用内部版本号作为标签,因为它们指向特定的Subversion版本。
你为什么试图限制访问标签?突然有一些超级秘密信息在该标签上,而之前并没有出现该标签的来源?您不能在
svnaccess
文件中使用通配符。
我认为真正的问题是,你有太多的标签,而用户列出出来需要很长很长的时间。另外,如果您在/tags
之下获得了20,000个标签,则很难找到您需要的标签。在这种情况下,只需删除不再需要的标签即可。
但是,这不就是说我们会失去信息吗?如果我发现我需要这个标签怎么办?
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/[email protected]
全部完成。我们有旧的代码。如果你需要的标签回你的资料库,将它复制回/tags
什么:
$ svn copy -r32393 http://repo/svn/tags/[email protected] http://repo/svn/tags
现在,/tags/2.4
又回来了。
如果你真的不喜欢删除标记,然后创建一个变量归档目录里,并移动过时的标签了这一点。这样,你不是删除标签,但是当你做svn ls http://repo/svn/tags
时,你不会最终看到它。
这个问题是,如果你想做一个转储和加载(例如,你将项目分离到另一个回购),如果你不包含存档标签,svndumpfilter
会全部搞砸。
最好的办法不是首先创建问题。只为发布版本创建标签,然后删除标签,如果您仍然觉得其中有太多标签的话。