Subversion - 是否可以禁用所有提交并使存储库只读?

时间:2012-02-10 12:59:13

标签: svn build-process configuration-management

我有一个subversion存储库,它是另一个远程存储库的镜像。我每周都使用svnsync镜像存储库。镜像存储库(本地副本)仅用于备份。

我想将镜像存储库保持为READ-ONLY,即没有人应该能够对此存储库进行任何更改,但是它们可以使用它来读取源文件,因为它比远程存储库更快。

我浏览了一下谷歌,似乎胡克可能是最好的选择。唯一的问题是我在Google上看到的所有示例都是基于Unix的,我无法找到适合Windows的示例,因为镜像存储库在Windows Server上运行。

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

首先,您在结帐网址中使用http://svn://吗?

如果您正在使用svn://,则可以配置存储库中的svnserve.conf文件,只需拥有一个空的传递文件即可删除授权访问权限。匿名访问默认为“只读”,因此只要您没有在svnserve.conf文件中更改该设置,就应该没问题。或者,您可以关闭匿名访问,并将授权访问权限更改为read-only

但是,如果您使用http://,则必须在Subversion服务器上配置Apache httpd配置,以禁止写访问。

这变得更加棘手,因为有多种方法可以设置Apache httpd身份验证,并且根据系统的不同,Apache httpd可以存储在多个位置。

另一种可能性是使用pre-commit hook关闭对存储库的所有读写访问权。

顺便说一下,旧的svnsync命令不仅要求svn读写访问权限来提交它正在同步的更改,而且还必须设置pre-revprop-change挂钩,所以svnsync命令也可以修改svn:logsvn:datesvn:author属性与原始存储库匹配。这意味着,如果您设法将存储库设为只读,则可能会中断svnsync。您需要了解svnsync的工作原理以及是否仍然如此。我的预提交钩子也可以解决这个问题。

答案 1 :(得分:6)

为什么不在svnserve.conf中配置anon-access = read和auth-access = read?