我有一个subversion存储库,它是另一个远程存储库的镜像。我每周都使用svnsync镜像存储库。镜像存储库(本地副本)仅用于备份。
我想将镜像存储库保持为READ-ONLY,即没有人应该能够对此存储库进行任何更改,但是它们可以使用它来读取源文件,因为它比远程存储库更快。
我浏览了一下谷歌,似乎胡克可能是最好的选择。唯一的问题是我在Google上看到的所有示例都是基于Unix的,我无法找到适合Windows的示例,因为镜像存储库在Windows Server上运行。
有什么想法吗?
答案 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:log
,svn:date
和svn:author
属性与原始存储库匹配。这意味着,如果您设法将存储库设为只读,则可能会中断svnsync
。您需要了解svnsync
的工作原理以及是否仍然如此。我的预提交钩子也可以解决这个问题。
答案 1 :(得分:6)
为什么不在svnserve.conf中配置anon-access = read和auth-access = read?